Skip to content

Commit

Permalink
MDL-55417 theme_noname: Update mform templates to re-use javascript
Browse files Browse the repository at this point in the history
Use an amd module instead of repeating JS in the templates.

Part of MDL-55071
  • Loading branch information
Damyon Wiese authored and danpoltawski committed Sep 23, 2016
1 parent 344321e commit 4691b2d
Show file tree
Hide file tree
Showing 8 changed files with 60 additions and 106 deletions.
1 change: 1 addition & 0 deletions theme/noname/amd/build/form-display-errors.min.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

47 changes: 47 additions & 0 deletions theme/noname/amd/src/form-display-errors.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
// 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/>.

/**
* Custom form error event handler to manipulate the bootstrap markup and show
* nicely styled errors in an mform.
*
* @module theme_noname/form-display-errors
* @copyright 2016 Damyon Wiese <damyon@moodle.com>
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
define(['jquery', 'core/event'], function($, Event) {
return {
enhance: function(elementid) {
var element = document.getElementById(elementid);
$(element).on(Event.Events.FORM_FIELD_VALIDATION, function(event, msg) {
event.preventDefault();
var parent = $(element).closest('.form-group');
var feedback = parent.find('.form-control-feedback');
if (msg !== '') {
parent.addClass('has-danger');
$(element).addClass('form-control-danger');
$(element).attr('aria-describedby', $(element).attr('id') + '-feedback');
feedback.html(msg);
feedback.show();
} else {
parent.removeClass('has-danger');
$(element).removeClass('form-control-danger');
$(element).attr('aria-describedby', '');
feedback.hide();
}
});
}
};
});
19 changes: 2 additions & 17 deletions theme/noname/templates/core_form/element-checkbox-inline.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,7 @@
{{{error}}}
</span>
{{#js}}
require(['jquery', 'core/event'], function($, Event) {
var element = document.getElementById('{{element.id}}');
$(element).on(Event.Events.FORM_FIELD_VALIDATION, function(event, msg) {
event.preventDefault();
var parent = $(element).closest('.form-group');
var feedback = parent.find('.form-control-feedback');
if (msg !== '') {
parent.addClass('has-danger');
$(element).attr('aria-describedby', $(element).attr('id') + '-feedback');
feedback.html(msg);
feedback.show();
} else {
parent.removeClass('has-danger');
$(element).attr('aria-describedby', '');
feedback.hide();
}
});
require(['theme_noname/form-display-errors'], function(module) {
module.enhance({{#quote}}{{element.id}}{{/quote}});
});
{{/js}}
19 changes: 2 additions & 17 deletions theme/noname/templates/core_form/element-checkbox.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -15,22 +15,7 @@
</div>
</div>
{{#js}}
require(['jquery', 'core/event'], function($, Event) {
var element = document.getElementById('{{element.id}}');
$(element).on(Event.Events.FORM_FIELD_VALIDATION, function(event, msg) {
event.preventDefault();
var parent = $(element).closest('.form-group');
var feedback = parent.find('.form-control-feedback');
if (msg !== '') {
parent.addClass('has-danger');
$(element).attr('aria-describedby', $(element).attr('id') + '-feedback');
feedback.html(msg);
feedback.show();
} else {
parent.removeClass('has-danger');
$(element).attr('aria-describedby', '');
feedback.hide();
}
});
require(['theme_noname/form-display-errors'], function(module) {
module.enhance({{#quote}}{{element.id}}{{/quote}});
});
{{/js}}
19 changes: 2 additions & 17 deletions theme/noname/templates/core_form/element-radio-inline.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -12,22 +12,7 @@
{{{error}}}
</span>
{{#js}}
require(['jquery', 'core/event'], function($, Event) {
var element = document.getElementById('{{element.id}}');
$(element).on(Event.Events.FORM_FIELD_VALIDATION, function(event, msg) {
event.preventDefault();
var parent = $(element).closest('.form-group');
var feedback = parent.find('.form-control-feedback');
if (msg !== '') {
parent.addClass('has-danger');
$(element).attr('aria-describedby', $(element).attr('id') + '-feedback');
feedback.html(msg);
feedback.show();
} else {
parent.removeClass('has-danger');
$(element).attr('aria-describedby', '');
feedback.hide();
}
});
require(['theme_noname/form-display-errors'], function(module) {
module.enhance({{#quote}}{{element.id}}{{/quote}});
});
{{/js}}
19 changes: 2 additions & 17 deletions theme/noname/templates/core_form/element-radio.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -15,22 +15,7 @@
</div>
</div>
{{#js}}
require(['jquery', 'core/event'], function($, Event) {
var element = document.getElementById('{{element.id}}');
$(element).on(Event.Events.FORM_FIELD_VALIDATION, function(event, msg) {
event.preventDefault();
var parent = $(element).closest('.form-group');
var feedback = parent.find('.form-control-feedback');
if (msg !== '') {
parent.addClass('has-danger');
$(element).attr('aria-describedby', $(element).attr('id') + '-feedback');
feedback.html(msg);
feedback.show();
} else {
parent.removeClass('has-danger');
$(element).attr('aria-describedby', '');
feedback.hide();
}
});
require(['theme_noname/form-display-errors'], function(module) {
module.enhance({{#quote}}{{element.id}}{{/quote}});
});
{{/js}}
21 changes: 2 additions & 19 deletions theme/noname/templates/core_form/element-template-inline.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -10,24 +10,7 @@
</div>
</div>
{{#js}}
require(['jquery', 'core/event'], function($, Event) {
var element = document.getElementById('{{element.id}}');
$(element).on(Event.Events.FORM_FIELD_VALIDATION, function(event, msg) {
event.preventDefault();
var parent = $(element).closest('.form-group');
var feedback = parent.find('.form-control-feedback');
if (msg !== '') {
parent.addClass('has-danger');
$(element).addClass('form-control-danger');
$(element).attr('aria-describedby', $(element).attr('id') + '-feedback');
feedback.html(msg);
feedback.show();
} else {
parent.removeClass('has-danger');
$(element).removeClass('form-control-danger');
$(element).attr('aria-describedby', '');
feedback.hide();
}
});
require(['theme_noname/form-display-errors'], function(module) {
module.enhance({{#quote}}{{element.id}}{{/quote}});
});
{{/js}}
21 changes: 2 additions & 19 deletions theme/noname/templates/core_form/element-template.mustache
Original file line number Diff line number Diff line change
Expand Up @@ -12,24 +12,7 @@
</div>
</div>
{{#js}}
require(['jquery', 'core/event'], function($, Event) {
var element = document.getElementById('{{element.id}}');
$(element).on(Event.Events.FORM_FIELD_VALIDATION, function(event, msg) {
event.preventDefault();
var parent = $(element).closest('.form-group');
var feedback = parent.find('.form-control-feedback');
if (msg !== '') {
parent.addClass('has-danger');
$(element).addClass('form-control-danger');
$(element).attr('aria-describedby', $(element).attr('id') + '-feedback');
feedback.html(msg);
feedback.show();
} else {
parent.removeClass('has-danger');
$(element).removeClass('form-control-danger');
$(element).attr('aria-describedby', '');
feedback.hide();
}
});
require(['theme_noname/form-display-errors'], function(module) {
module.enhance({{#quote}}{{element.id}}{{/quote}});
});
{{/js}}

0 comments on commit 4691b2d

Please sign in to comment.