keeweb/app/scripts/views/settings/settings-plugins-view.js

51 lines
1.5 KiB
JavaScript
Raw Normal View History

2017-02-18 23:46:59 +01:00
'use strict';
const Backbone = require('backbone');
const Locale = require('../../util/locale');
const PluginManager = require('../../plugins/plugin-manager');
const SettingsPluginsView = Backbone.View.extend({
template: require('templates/settings/settings-plugins.hbs'),
events: {
'click .settings_plugins-install-btn': 'installClick'
},
render() {
this.renderTemplate({
plugins: []
});
},
installClick() {
const installBtn = this.$el.find('.settings_plugins-install-btn');
const urlTextBox = this.$el.find('#settings__plugins-install-url');
const errorBox = this.$el.find('.settings__plugins-install-error');
errorBox.html('');
const url = urlTextBox.val().trim();
if (!url) {
return;
}
urlTextBox.prop('disabled', true);
installBtn.text(Locale.setPlInstallBtnProgress + '...').prop('disabled', true);
PluginManager.install(url)
.then(() => {
this.installFinished();
urlTextBox.val('');
})
.catch(e => {
this.installFinished();
errorBox.text(e.toString());
});
},
installFinished() {
const installBtn = this.$el.find('.settings_plugins-install-btn');
const urlTextBox = this.$el.find('#settings__plugins-install-url');
urlTextBox.prop('disabled', false);
installBtn.text(Locale.setPlInstallBtn).prop('disabled', false);
}
});
module.exports = SettingsPluginsView;