| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | const Mn       = require('backbone.marionette');const App      = require('../../main');const template = require('./main.ejs');require('jquery-serializejson');require('selectize');module.exports = Mn.View.extend({    template:  template,    className: 'modal-dialog',    ui: {        form:     'form',        buttons:  '.modal-footer button',        cancel:   'button.cancel',        save:     'button.save',        options:  '.option-item',        value:    'input[name="value"]',        redirect: '.redirect-input',        html:     '.html-content'    },    events: {        'change @ui.value': function (e) {            let val = this.ui.value.filter(':checked').val();            this.ui.options.hide();            this.ui.options.filter('.option-' + val).show();        },        'click @ui.save': function (e) {            e.preventDefault();            let val = this.ui.value.filter(':checked').val();            // Clear redirect field before validation            if (val !== 'redirect') {                this.ui.redirect.val('').attr('required', false);            } else {                this.ui.redirect.attr('required', true);            }            this.ui.html.attr('required', val === 'html');            if (!this.ui.form[0].checkValidity()) {                $('<input type="submit">').hide().appendTo(this.ui.form).click().remove();                return;            }            let view = this;            let data = this.ui.form.serializeJSON();            data.id  = this.model.get('id');            this.ui.buttons.prop('disabled', true).addClass('btn-disabled');            App.Api.Settings.update(data)                .then(result => {                    view.model.set(result);                    App.UI.closeModal();                })                .catch(err => {                    alert(err.message);                    this.ui.buttons.prop('disabled', false).removeClass('btn-disabled');                });        }    },    onRender: function () {        this.ui.value.trigger('change');    }});
 |