From 740d42257fc00235b1cebdc90866fe34bf9464b3 Mon Sep 17 00:00:00 2001 From: Petr Vobornik Date: Jul 21 2014 08:47:06 +0000 Subject: webui: add filter to attributes widget Adds filter field to attribute box in permissions for better user experience. User can then quickly find the desired attribute. Initial version of the patch authored by: Adam Misnyovszki https://fedorahosted.org/freeipa/ticket/4253 Reviewed-By: Endi Sukma Dewata --- diff --git a/install/ui/src/freeipa/aci.js b/install/ui/src/freeipa/aci.js index ce7d427..929ec92 100644 --- a/install/ui/src/freeipa/aci.js +++ b/install/ui/src/freeipa/aci.js @@ -553,6 +553,59 @@ aci.attributes_widget = function(spec) { var id = spec.name; + that.create = function(container) { + that.container = container; + + that.widget_create(container); + that.create_search_filter(container); + that.owb_create(container); + + if (that.undo) { + that.create_undo(container); + } + + that.create_error_link(container); + }; + + that.create_search_filter = function(container) { + var filter_container = $('
', { + 'class': 'search-filter' + }); + + that.filter = $('', { + type: 'text', + name: 'filter', + 'class': 'form-control', + placeholder: text.get('@i18n:objects.permission.filter') + }).appendTo(filter_container); + + that.filter.keyup(function(e) { + that.filter_options(); + }); + + var find_button = IPA.action_button({ + name: 'find', + icon: 'fa-search', + click: function() { + that.filter_options(); + return false; + } + }).appendTo(filter_container); + + filter_container.appendTo(container); + }; + + that.filter_options = function() { + $("li", that.$node).each(function() { + var item = $(this); + if(item.find('input').val().indexOf(that.filter.val()) === -1) { + item.css('display','none'); + } else { + item.css('display','inline'); + } + }); + }; + that.update = function(values) { that.values = []; diff --git a/install/ui/test/data/ipa_init.json b/install/ui/test/data/ipa_init.json index b3d3859..a6a3acd 100644 --- a/install/ui/test/data/ipa_init.json +++ b/install/ui/test/data/ipa_init.json @@ -374,6 +374,7 @@ "enable": "Enable token" }, "permission": { + "filter": "Filter", "identity": "Permission settings", "managed": "Attribute breakdown", "target": "Target" diff --git a/ipalib/plugins/internal.py b/ipalib/plugins/internal.py index 53f117f..6d925c5 100644 --- a/ipalib/plugins/internal.py +++ b/ipalib/plugins/internal.py @@ -518,6 +518,7 @@ class i18n_messages(Command): "enable": "Enable token", }, "permission": { + "filter": _("Filter"), "identity": _("Permission settings"), "managed": _("Attribute breakdown"), "target": _("Target"),