From dc9f4a30a47cdce1e0070c18398351ea6c307305 Mon Sep 17 00:00:00 2001 From: Simo Sorce Date: Thu, 6 Nov 2014 14:01:04 -0500 Subject: Add visual cues to configuration panels Make it easier to recognize which plugins are enabled and which are disabled. Also make it easier to recognize when a plugin has just changed state, by flashing its row (help also realize it may have moved up/down) Based on concept work by Petr Vobornik Signed-off-by: Simo Sorce Reviewed-by: Patrick Uiterwijk --- ipsilon/admin/common.py | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) (limited to 'ipsilon') diff --git a/ipsilon/admin/common.py b/ipsilon/admin/common.py index af315ff..2b83314 100755 --- a/ipsilon/admin/common.py +++ b/ipsilon/admin/common.py @@ -141,13 +141,6 @@ class AdminPluginsOrder(AdminPage): def GET(self, *args, **kwargs): return self.parent.root_with_msg() - def _get_enabled_list(self): - cur = list() - for p in self._site[self.facility].available.values(): - if p.is_enabled: - cur.append(p.name) - return cur - @admin_protect def POST(self, *args, **kwargs): @@ -158,7 +151,8 @@ class AdminPluginsOrder(AdminPage): message = "Nothing was modified." message_type = "info" - cur_enabled = self._get_enabled_list() + changed = None + cur_enabled = self._site[self.facility].enabled if 'order' in kwargs: order = kwargs['order'].split(',') @@ -185,6 +179,12 @@ class AdminPluginsOrder(AdminPage): message = "New configuration saved." message_type = ADMIN_STATUS_OK + changed = dict() + self.debug('%s -> %s' % (cur_enabled, new_order)) + for i in range(0, len(cur_enabled)): + if cur_enabled[i] != new_order[i]: + changed[cur_enabled[i]] = 'reordered' + except ValueError, e: message = str(e) message_type = ADMIN_STATUS_ERROR @@ -194,7 +194,8 @@ class AdminPluginsOrder(AdminPage): message_type = ADMIN_STATUS_ERROR return self.parent.root_with_msg(message=message, - message_type=message_type) + message_type=message_type, + changed=changed) class AdminPlugins(AdminPage): @@ -223,15 +224,19 @@ class AdminPlugins(AdminPage): def save_enabled_plugins(self, names): self._site[self.facility].save_enabled(names) - def root_with_msg(self, message=None, message_type=None): + def root_with_msg(self, message=None, message_type=None, changed=None): plugins = self._site[self.facility] + if changed is None: + changed = dict() + targs = {'title': self.title, 'menu': self._master.menu, 'message': message, 'message_type': message_type, 'available': plugins.available, 'enabled': plugins.enabled, + 'changed': changed, 'baseurl': self.url, 'newurl': self.url} if self.order: @@ -269,7 +274,8 @@ class AdminPlugins(AdminPage): obj.enable() obj.save_enabled_state() msg = "Plugin %s enabled" % obj.name - return self.root_with_msg(msg, ADMIN_STATUS_OK) + return self.root_with_msg(msg, ADMIN_STATUS_OK, + changed={obj.name: 'enabled'}) enable.public_function = True @admin_protect @@ -283,7 +289,8 @@ class AdminPlugins(AdminPage): obj.disable() obj.save_enabled_state() msg = "Plugin %s disabled" % obj.name - return self.root_with_msg(msg, ADMIN_STATUS_OK) + return self.root_with_msg(msg, ADMIN_STATUS_OK, + changed={obj.name: 'disabled'}) disable.public_function = True -- cgit