mirror of
https://github.com/moodle/moodle.git
synced 2025-04-21 00:12:56 +02:00
Merge branch 'MDL-70288-master-2' of git://github.com/junpataleta/moodle
This commit is contained in:
commit
f756d2afbe
@ -60,12 +60,12 @@ class tool_capability_settings_form extends moodleform {
|
||||
$form->addElement('select', 'roles', get_string('roleslabel', 'tool_capability'), $roles, $attributes);
|
||||
$form->setType('roles', PARAM_TEXT);
|
||||
|
||||
$form->addElement('checkbox', 'onlydiff',
|
||||
get_string('filters', 'tool_capability'),
|
||||
get_string('onlydiff', 'tool_capability'));
|
||||
$filters = [];
|
||||
$filters[] = $form->createElement('checkbox', 'onlydiff', get_string('onlydiff', 'tool_capability'));
|
||||
$form->setType('onlydiff', PARAM_BOOL);
|
||||
$form->addGroup($filters, 'filters', get_string('filters', 'tool_capability'), array('<br>'), false);
|
||||
|
||||
$form->addElement('submit', 'submitbutton', get_string('getreport', 'tool_capability'));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -8,7 +8,6 @@
|
||||
</div>
|
||||
<div class="col-md-9 checkbox">
|
||||
<div class="form-check d-flex">
|
||||
<label>
|
||||
{{^element.hardfrozen}}
|
||||
{{^element.frozen}}
|
||||
<input type="hidden" name="{{element.name}}" value="{{element.deselectedvalue}}">
|
||||
@ -25,19 +24,27 @@
|
||||
{{/element.selectedvalue}}
|
||||
id="{{element.id}}" {{#element.checked}}checked{{/element.checked}}
|
||||
{{#error}}
|
||||
autofocus aria-describedby="{{element.iderror}}"
|
||||
autofocus aria-describedby="{{#text}}{{element.id}}_description {{/text}}{{element.iderror}}"
|
||||
{{/error}}
|
||||
{{^error}}
|
||||
{{#text}}
|
||||
aria-describedby="{{element.id}}_description"
|
||||
{{/text}}
|
||||
{{/error}}
|
||||
{{#element.frozen}}
|
||||
disabled
|
||||
{{/element.frozen}}
|
||||
{{{element.attributes}}} >
|
||||
{{#text}}
|
||||
{{#text}}
|
||||
<span id="{{element.id}}_description">
|
||||
{{{.}}}
|
||||
{{/text}}
|
||||
{{^text}}
|
||||
</span>
|
||||
{{/text}}
|
||||
{{^text}}
|
||||
<label for="{{element.id}}">
|
||||
{{{label}}}
|
||||
{{/text}}
|
||||
</label>
|
||||
</label>
|
||||
{{/text}}
|
||||
<div class="ml-2 d-flex align-items-center align-self-start">
|
||||
{{#required}}
|
||||
<div class="text-danger" title="{{#str}}required{{/str}}">
|
||||
|
@ -8,7 +8,6 @@
|
||||
</div>
|
||||
<div class="col-md-9 checkbox">
|
||||
<div class="form-check d-flex">
|
||||
<label>
|
||||
{{^element.hardfrozen}}
|
||||
{{#element.frozen}}
|
||||
<input type="hidden" name="{{element.name}}" value="{{element.frozenvalue}}">
|
||||
@ -25,19 +24,27 @@
|
||||
{{/element.value}}
|
||||
id="{{element.id}}" {{#element.checked}}checked{{/element.checked}}
|
||||
{{#error}}
|
||||
autofocus aria-describedby="{{element.iderror}}"
|
||||
autofocus aria-describedby="{{#text}}{{element.id}}_description {{/text}}{{element.iderror}}"
|
||||
{{/error}}
|
||||
{{^error}}
|
||||
{{#text}}
|
||||
aria-describedby="{{element.id}}_description"
|
||||
{{/text}}
|
||||
{{/error}}
|
||||
{{#element.frozen}}
|
||||
disabled
|
||||
{{/element.frozen}}
|
||||
{{{element.attributes}}} >
|
||||
{{#text}}
|
||||
{{#text}}
|
||||
<span id="{{element.id}}_description">
|
||||
{{{.}}}
|
||||
{{/text}}
|
||||
{{^text}}
|
||||
</span>
|
||||
{{/text}}
|
||||
{{^text}}
|
||||
<label for="{{element.id}}">
|
||||
{{{label}}}
|
||||
{{/text}}
|
||||
</label>
|
||||
</label>
|
||||
{{/text}}
|
||||
<div class="ml-2 d-flex align-items-center align-self-start">
|
||||
{{#required}}
|
||||
<div class="text-danger" title="{{#str}}required{{/str}}">
|
||||
|
@ -279,7 +279,7 @@ class mod_lti_edit_types_form extends moodleform {
|
||||
$mform->setDefault('lti_acceptgrades', '2');
|
||||
$mform->addHelpButton('lti_acceptgrades', 'accept_grades_admin', 'lti');
|
||||
|
||||
$mform->addElement('checkbox', 'lti_forcessl', ' ', ' ' . get_string('force_ssl', 'lti'), $options);
|
||||
$mform->addElement('checkbox', 'lti_forcessl', get_string('force_ssl', 'lti'), '', $options);
|
||||
$mform->setType('lti_forcessl', PARAM_BOOL);
|
||||
if (!empty($CFG->mod_lti_forcessl)) {
|
||||
$mform->setDefault('lti_forcessl', '1');
|
||||
|
@ -104,12 +104,12 @@ class mod_lti_mod_form extends moodleform_mod {
|
||||
|
||||
$mform->setAdvanced('showdescription');
|
||||
|
||||
$mform->addElement('checkbox', 'showtitlelaunch', ' ', ' ' . get_string('display_name', 'lti'));
|
||||
$mform->addElement('checkbox', 'showtitlelaunch', get_string('display_name', 'lti'));
|
||||
$mform->setAdvanced('showtitlelaunch');
|
||||
$mform->setDefault('showtitlelaunch', true);
|
||||
$mform->addHelpButton('showtitlelaunch', 'display_name', 'lti');
|
||||
|
||||
$mform->addElement('checkbox', 'showdescriptionlaunch', ' ', ' ' . get_string('display_description', 'lti'));
|
||||
$mform->addElement('checkbox', 'showdescriptionlaunch', get_string('display_description', 'lti'));
|
||||
$mform->setAdvanced('showdescriptionlaunch');
|
||||
$mform->addHelpButton('showdescriptionlaunch', 'display_description', 'lti');
|
||||
|
||||
@ -281,17 +281,17 @@ class mod_lti_mod_form extends moodleform_mod {
|
||||
// Add privacy preferences fieldset where users choose whether to send their data.
|
||||
$mform->addElement('header', 'privacy', get_string('privacy', 'lti'));
|
||||
|
||||
$mform->addElement('advcheckbox', 'instructorchoicesendname', ' ', ' ' . get_string('share_name', 'lti'));
|
||||
$mform->addElement('advcheckbox', 'instructorchoicesendname', get_string('share_name', 'lti'));
|
||||
$mform->setDefault('instructorchoicesendname', '1');
|
||||
$mform->addHelpButton('instructorchoicesendname', 'share_name', 'lti');
|
||||
$mform->disabledIf('instructorchoicesendname', 'typeid', 'in', $toolproxy);
|
||||
|
||||
$mform->addElement('advcheckbox', 'instructorchoicesendemailaddr', ' ', ' ' . get_string('share_email', 'lti'));
|
||||
$mform->addElement('advcheckbox', 'instructorchoicesendemailaddr', get_string('share_email', 'lti'));
|
||||
$mform->setDefault('instructorchoicesendemailaddr', '1');
|
||||
$mform->addHelpButton('instructorchoicesendemailaddr', 'share_email', 'lti');
|
||||
$mform->disabledIf('instructorchoicesendemailaddr', 'typeid', 'in', $toolproxy);
|
||||
|
||||
$mform->addElement('advcheckbox', 'instructorchoiceacceptgrades', ' ', ' ' . get_string('accept_grades', 'lti'));
|
||||
$mform->addElement('advcheckbox', 'instructorchoiceacceptgrades', get_string('accept_grades', 'lti'));
|
||||
$mform->setDefault('instructorchoiceacceptgrades', '1');
|
||||
$mform->addHelpButton('instructorchoiceacceptgrades', 'accept_grades', 'lti');
|
||||
$mform->disabledIf('instructorchoiceacceptgrades', 'typeid', 'in', $toolproxy);
|
||||
|
@ -116,8 +116,7 @@ class qtype_ddimageortext_edit_form extends qtype_ddtoimage_edit_form_base {
|
||||
protected function definition_draggable_items($mform, $itemrepeatsatstart) {
|
||||
$mform->addElement('header', 'draggableitemheader',
|
||||
get_string('draggableitems', 'qtype_ddimageortext'));
|
||||
$mform->addElement('advcheckbox', 'shuffleanswers', ' ',
|
||||
get_string('shuffleimages', 'qtype_'.$this->qtype()));
|
||||
$mform->addElement('advcheckbox', 'shuffleanswers', get_string('shuffleimages', 'qtype_'.$this->qtype()));
|
||||
$mform->setDefault('shuffleanswers', 0);
|
||||
$this->repeat_elements($this->draggable_item($mform), $itemrepeatsatstart,
|
||||
$this->draggable_items_repeated_options(),
|
||||
@ -143,8 +142,7 @@ class qtype_ddimageortext_edit_form extends qtype_ddtoimage_edit_form_base {
|
||||
get_string('group', 'qtype_gapselect'),
|
||||
$options,
|
||||
array('class' => 'draggroup'));
|
||||
$grouparray[] = $mform->createElement('advcheckbox', 'infinite', ' ',
|
||||
get_string('infinite', 'qtype_ddimageortext'));
|
||||
$grouparray[] = $mform->createElement('advcheckbox', 'infinite', get_string('infinite', 'qtype_ddimageortext'));
|
||||
$draggableimageitem[] = $mform->createElement('group', 'drags',
|
||||
get_string('draggableitemheader', 'qtype_ddimageortext', '{no}'), $grouparray);
|
||||
|
||||
|
@ -44,8 +44,7 @@ class qtype_ddmarker_edit_form extends qtype_ddtoimage_edit_form_base {
|
||||
}
|
||||
|
||||
protected function definition_inner($mform) {
|
||||
$mform->addElement('advcheckbox', 'showmisplaced', ' ',
|
||||
get_string('showmisplaced', 'qtype_ddmarker'));
|
||||
$mform->addElement('advcheckbox', 'showmisplaced', get_string('showmisplaced', 'qtype_ddmarker'));
|
||||
parent::definition_inner($mform);
|
||||
|
||||
$mform->addHelpButton('drops[0]', 'dropzones', 'qtype_ddmarker');
|
||||
@ -60,8 +59,7 @@ class qtype_ddmarker_edit_form extends qtype_ddtoimage_edit_form_base {
|
||||
protected function definition_draggable_items($mform, $itemrepeatsatstart) {
|
||||
$mform->addElement('header', 'draggableitemheader',
|
||||
get_string('markers', 'qtype_ddmarker'));
|
||||
$mform->addElement('advcheckbox', 'shuffleanswers', ' ',
|
||||
get_string('shuffleimages', 'qtype_'.$this->qtype()));
|
||||
$mform->addElement('advcheckbox', 'shuffleanswers', get_string('shuffleimages', 'qtype_'.$this->qtype()));
|
||||
$mform->setDefault('shuffleanswers', 0);
|
||||
$this->repeat_elements($this->draggable_item($mform), $itemrepeatsatstart,
|
||||
$this->draggable_items_repeated_options(),
|
||||
|
@ -49,8 +49,7 @@ class qtype_ddwtos_edit_form extends qtype_gapselect_edit_form_base {
|
||||
|
||||
protected function choice_group($mform) {
|
||||
$grouparray = parent::choice_group($mform);
|
||||
$grouparray[] = $mform->createElement('checkbox', 'infinite', ' ',
|
||||
get_string('infinite', 'qtype_ddwtos'), null,
|
||||
$grouparray[] = $mform->createElement('checkbox', 'infinite', get_string('infinite', 'qtype_ddwtos'), '', null,
|
||||
array('size' => 1, 'class' => 'tweakcss'));
|
||||
return $grouparray;
|
||||
}
|
||||
|
@ -1,2 +1,2 @@
|
||||
define ("theme_boost/form-display-errors",["jquery","core/event"],function(a,b){return{enhance:function enhance(c){var d=document.getElementById(c);if(!d){return}a(d).on(b.Events.FORM_FIELD_VALIDATION,function(b,c){b.preventDefault();var e=a(d).closest(".form-group"),f=e.find(".form-control-feedback");if("TEXTAREA"==a(d).prop("tagName")&&e.find("[contenteditable]")){d=e.find("[contenteditable]")}if(""!==c){e.addClass("has-danger");e.data("client-validation-error",!0);a(d).addClass("is-invalid");a(d).attr("aria-describedby",f.attr("id"));a(d).attr("aria-invalid",!0);f.attr("tabindex",0);f.html(c);if(!f.is(":visible")){f.show();f.focus()}}else{if(!0===e.data("client-validation-error")){e.removeClass("has-danger");e.data("client-validation-error",!1);a(d).removeClass("is-invalid");a(d).removeAttr("aria-describedby");a(d).attr("aria-invalid",!1);f.hide()}}});var e=d.closest("form");if(e&&!("boostFormErrorsEnhanced"in e.dataset)){e.addEventListener("submit",function(){var b=a(".form-control-feedback:visible");if(b.length){b[0].focus()}});e.dataset.boostFormErrorsEnhanced=1}}}});
|
||||
define ("theme_boost/form-display-errors",["jquery","core/event"],function(a,b){return{enhance:function enhance(c){var d=document.getElementById(c);if(!d){return}a(d).on(b.Events.FORM_FIELD_VALIDATION,function(b,c){b.preventDefault();var e=a(d).closest(".form-group"),f=e.find(".form-control-feedback"),g=f.attr("id"),h=a(d).attr("aria-describedby");if("undefined"==typeof h){h=""}var i=[];if(h.length){i=h.split(" ")}var j=i.indexOf(g);if("TEXTAREA"==a(d).prop("tagName")&&e.find("[contenteditable]")){d=e.find("[contenteditable]")}if(""!==c){e.addClass("has-danger");e.data("client-validation-error",!0);a(d).addClass("is-invalid");if(-1===j){i.push(g);a(d).attr("aria-describedby",i.join(" "))}a(d).attr("aria-invalid",!0);f.attr("tabindex",0);f.html(c);if(!f.is(":visible")){f.show();f.focus()}}else{if(!0===e.data("client-validation-error")){e.removeClass("has-danger");e.data("client-validation-error",!1);a(d).removeClass("is-invalid");if(-1<j){i.splice(j,1)}if(i.length){h=i.join(" ");a(d).attr("aria-describedby",h)}else{a(d).removeAttr("aria-describedby")}a(d).attr("aria-invalid",!1);f.hide()}}});var e=d.closest("form");if(e&&!("boostFormErrorsEnhanced"in e.dataset)){e.addEventListener("submit",function(){var b=a(".form-control-feedback:visible");if(b.length){b[0].focus()}});e.dataset.boostFormErrorsEnhanced=1}}}});
|
||||
//# sourceMappingURL=form-display-errors.min.js.map
|
||||
|
File diff suppressed because one or more lines are too long
@ -35,6 +35,20 @@ define(['jquery', 'core/event'], function($, Event) {
|
||||
event.preventDefault();
|
||||
var parent = $(element).closest('.form-group');
|
||||
var feedback = parent.find('.form-control-feedback');
|
||||
const feedbackId = feedback.attr('id');
|
||||
|
||||
// Get current aria-describedby value.
|
||||
let describedBy = $(element).attr('aria-describedby');
|
||||
if (typeof describedBy === "undefined") {
|
||||
describedBy = '';
|
||||
}
|
||||
// Split aria-describedby attribute into an array of IDs if necessary.
|
||||
let describedByIds = [];
|
||||
if (describedBy.length) {
|
||||
describedByIds = describedBy.split(" ");
|
||||
}
|
||||
// Find the the feedback container in the aria-describedby attribute.
|
||||
const feedbackIndex = describedByIds.indexOf(feedbackId);
|
||||
|
||||
// Sometimes (atto) we have a hidden textarea backed by a real contenteditable div.
|
||||
if (($(element).prop("tagName") == 'TEXTAREA') && parent.find('[contenteditable]')) {
|
||||
@ -44,7 +58,11 @@ define(['jquery', 'core/event'], function($, Event) {
|
||||
parent.addClass('has-danger');
|
||||
parent.data('client-validation-error', true);
|
||||
$(element).addClass('is-invalid');
|
||||
$(element).attr('aria-describedby', feedback.attr('id'));
|
||||
// Append the feedback ID to the aria-describedby attribute if it doesn't exist yet.
|
||||
if (feedbackIndex === -1) {
|
||||
describedByIds.push(feedbackId);
|
||||
$(element).attr('aria-describedby', describedByIds.join(" "));
|
||||
}
|
||||
$(element).attr('aria-invalid', true);
|
||||
feedback.attr('tabindex', 0);
|
||||
feedback.html(msg);
|
||||
@ -61,7 +79,20 @@ define(['jquery', 'core/event'], function($, Event) {
|
||||
parent.removeClass('has-danger');
|
||||
parent.data('client-validation-error', false);
|
||||
$(element).removeClass('is-invalid');
|
||||
$(element).removeAttr('aria-describedby');
|
||||
// If the aria-describedby attribute contains the error container's ID, remove it.
|
||||
if (feedbackIndex > -1) {
|
||||
describedByIds.splice(feedbackIndex, 1);
|
||||
}
|
||||
// Check the remaining element IDs in the aria-describedby attribute.
|
||||
if (describedByIds.length) {
|
||||
// If there's at least one, combine them with a blank space and update the aria-describedby attribute.
|
||||
describedBy = describedByIds.join(" ");
|
||||
// Put back the new describedby attribute.
|
||||
$(element).attr('aria-describedby', describedBy);
|
||||
} else {
|
||||
// If there's none, remove the aria-describedby attribute.
|
||||
$(element).removeAttr('aria-describedby');
|
||||
}
|
||||
$(element).attr('aria-invalid', false);
|
||||
feedback.hide();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user