56 lines
1.5 KiB
JavaScript
56 lines
1.5 KiB
JavaScript
/**
|
|
A base class for helping us display modal content
|
|
|
|
@class ModalBodyView
|
|
@extends Discourse.View
|
|
@namespace Discourse
|
|
@module Discourse
|
|
**/
|
|
Discourse.ModalBodyView = Discourse.View.extend({
|
|
|
|
// Focus on first element
|
|
didInsertElement: function() {
|
|
$('#discourse-modal').modal('show');
|
|
|
|
var controller = this.get('controller');
|
|
$('#discourse-modal').on('hide.discourse', function() {
|
|
controller.send('closeModal');
|
|
});
|
|
|
|
$('#modal-alert').hide();
|
|
|
|
var modalBodyView = this;
|
|
Em.run.schedule('afterRender', function() {
|
|
modalBodyView.$('input:first').focus();
|
|
});
|
|
|
|
var title = this.get('title');
|
|
if (title) {
|
|
this.set('controller.controllers.modal.title', title);
|
|
}
|
|
},
|
|
|
|
willDestroyElement: function() {
|
|
$('#discourse-modal').off('hide.discourse');
|
|
},
|
|
|
|
// Pass the errors to our errors view
|
|
displayErrors: function(errors, callback) {
|
|
this.set('parentView.parentView.modalErrorsView.errors', errors);
|
|
if (typeof callback === "function") callback();
|
|
},
|
|
|
|
flashMessageChanged: function() {
|
|
var flashMessage = this.get('controller.flashMessage');
|
|
if (flashMessage) {
|
|
var messageClass = flashMessage.get('messageClass') || 'success';
|
|
var $alert = $('#modal-alert').hide().removeClass('alert-error', 'alert-success');
|
|
$alert.addClass("alert alert-" + messageClass).html(flashMessage.get('message'));
|
|
$alert.fadeIn();
|
|
}
|
|
}.observes('controller.flashMessage')
|
|
|
|
});
|
|
|
|
|