FEATURE: Per-plugin settings buttons, "Enabled" column

Also, added enabled_site_setting to the Poll plugin so it shows up properly.
This commit is contained in:
Kane York 2015-07-02 09:45:17 -07:00
parent 0e74c46d74
commit af042ffe5e
8 changed files with 79 additions and 9 deletions

View File

@ -5,8 +5,7 @@ export default Ember.ArrayController.extend(Presence, {
onlyOverridden: false,
filtered: Ember.computed.notEmpty('filter'),
filterContent: Discourse.debounce(function() {
filterContentNow: function(category) {
// If we have no content, don't bother filtering anything
if (!this.present('allSiteSettings')) return;
@ -48,7 +47,15 @@ export default Ember.ArrayController.extend(Presence, {
});
this.set('model', matchesGroupedByCategory);
this.transitionToRoute("adminSiteSettingsCategory", "all_results");
return this.transitionToRoute("adminSiteSettingsCategory", category || "all_results");
},
filterContent: Discourse.debounce(function() {
if (this.get("_skipBounce")) {
this.set("_skipBounce", false);
} else {
this.filterContentNow();
}
}, 250).observes('filter', 'onlyOverridden'),
actions: {

View File

@ -4,8 +4,21 @@ export default Ember.Route.extend({
},
actions: {
showSettings() {
this.transitionTo('adminSiteSettingsCategory', 'plugins');
showSettings(plugin) {
const controller = this.controllerFor('adminSiteSettings');
this.transitionTo('adminSiteSettingsCategory', 'plugins').then(function() {
if (plugin) {
const match = /^(.*)_enabled/.exec(plugin.get('enabled_setting'));
if (match[1]) {
// filterContent() is normally on a debounce from typing.
// Because we don't want the default of "All Results", we tell it
// to skip the next debounce.
controller.set('filter', match[1]);
controller.set('_skipBounce', true);
controller.filterContentNow('plugins');
}
}
});
}
}
});

View File

@ -9,11 +9,13 @@
<br/>
<table>
<table class="admin-plugins">
<thead>
<tr>
<th>{{i18n "admin.plugins.name"}}</th>
<th>{{i18n "admin.plugins.version"}}</th>
<th>{{i18n "admin.plugins.enabled"}}</th>
<th></th>
</tr>
</thead>
<tbody>
@ -27,6 +29,25 @@
{{/if}}
</td>
<td>{{plugin.version}}</td>
<td class="col-enabled">
{{#if plugin.enabled_setting}}
{{#if plugin.enabled}}
{{i18n "admin.plugins.is_enabled"}}
{{else}}
{{i18n "admin.plugins.not_enabled"}}
{{/if}}
{{else}}
{{i18n "admin.plugins.cant_disable"}}
{{/if}}
</td>
<td>
{{#if plugin.enabled_setting}}
<button {{action "showSettings" plugin}} class="btn">
{{fa-icon "gear"}}
{{i18n "admin.plugins.change_settings_short"}}
</button>
{{/if}}
</td>
</tr>
{{/each}}
</tbody>

View File

@ -1240,6 +1240,10 @@ table.api-keys {
}
}
.admin-plugins .col-enabled {
width: 20px;
}
// Backups
// --------------------------------------------------

View File

@ -3,7 +3,9 @@ class AdminPluginSerializer < ApplicationSerializer
:name,
:version,
:url,
:admin_route
:admin_route,
:enabled,
:enabled_setting
def id
object.metadata.name
@ -21,6 +23,18 @@ class AdminPluginSerializer < ApplicationSerializer
object.metadata.url
end
def enabled
object.enabled?
end
def enabled_setting
object.enabled_site_setting
end
def include_enabled_setting?
enabled_setting.present?
end
def include_url?
url.present?
end

View File

@ -1825,7 +1825,12 @@ en:
name: "Name"
none_installed: "You don't have any plugins installed."
version: "Version"
enabled: "Enabled?"
is_enabled: "Y"
not_enabled: "N"
cant_disable: "-"
change_settings: "Change Settings"
change_settings_short: "Settings"
howto: "How do I install plugins?"
backups:

View File

@ -299,8 +299,12 @@ class Plugin::Instance
end
end
def enabled_site_setting(setting)
@enabled_site_setting = setting
def enabled_site_setting(setting=nil)
if setting
@enabled_site_setting = setting
else
@enabled_site_setting
end
end
protected

View File

@ -4,6 +4,8 @@
# authors: Vikhyat Korrapati (vikhyat), Régis Hanol (zogstrip)
# url: https://github.com/discourse/discourse/tree/master/plugins/poll
enabled_site_setting :poll_enabled
register_asset "stylesheets/common/poll.scss"
register_asset "stylesheets/desktop/poll.scss", :desktop
register_asset "stylesheets/mobile/poll.scss", :mobile