diff --git a/.gitignore b/.gitignore index eb27ffd..b6c4220 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -SOURCES/freeipa-4.8.7.tar.gz +SOURCES/freeipa-4.9.0rc3.tar.gz diff --git a/.ipa.metadata b/.ipa.metadata index f2e66c8..359554f 100644 --- a/.ipa.metadata +++ b/.ipa.metadata @@ -1 +1 @@ -0099d799a77a757eeb4a95a69a38bdec24e45026 SOURCES/freeipa-4.8.7.tar.gz +71c0691597296f321e093d9acb36677c26593a1f SOURCES/freeipa-4.9.0rc3.tar.gz diff --git a/SOURCES/0001-WebUI-Fix-IPA-Error-3007-RequirmentError-while-addin_rhbz#1757045.patch b/SOURCES/0001-WebUI-Fix-IPA-Error-3007-RequirmentError-while-addin_rhbz#1757045.patch deleted file mode 100644 index 34580fe..0000000 --- a/SOURCES/0001-WebUI-Fix-IPA-Error-3007-RequirmentError-while-addin_rhbz#1757045.patch +++ /dev/null @@ -1,409 +0,0 @@ -From c2ba333b9681d008d9c528a79dbdd76ce11a3ecd Mon Sep 17 00:00:00 2001 -From: Serhii Tsymbaliuk -Date: Thu, 28 May 2020 08:47:49 +0200 -Subject: [PATCH 01/22] WebUI: Fix "IPA Error 3007: RequirmentError" while - adding idoverrideuser association - -Add builder for association adder dialog which allows to override behavior of the component. -Replace default implementation with a custom one for idoverrideuser. -Replace text filter with 'ID view' select box in the idoverrideuser dialog. - -Ticket: https://pagure.io/freeipa/issue/8335 - -Signed-off-by: Serhii Tsymbaliuk -Reviewed-By: Alexander Bokovoy ---- - install/ui/src/freeipa/association.js | 13 ++++- - install/ui/src/freeipa/dialog.js | 73 ++++++++++++++++----------- - install/ui/src/freeipa/group.js | 14 +++++ - install/ui/src/freeipa/idviews.js | 58 +++++++++++++++++++++ - ipaserver/plugins/internal.py | 6 +++ - 5 files changed, 133 insertions(+), 31 deletions(-) - -diff --git a/install/ui/src/freeipa/association.js b/install/ui/src/freeipa/association.js -index f10ccb2a5..b083a79f9 100644 ---- a/install/ui/src/freeipa/association.js -+++ b/install/ui/src/freeipa/association.js -@@ -25,6 +25,7 @@ - define([ - 'dojo/_base/lang', - 'dojo/Deferred', -+ './builder', - './metadata', - './ipa', - './jquery', -@@ -38,7 +39,7 @@ define([ - './facet', - './search', - './dialog'], -- function(lang, Deferred, metadata_provider, IPA, $, metadata, -+ function(lang, Deferred, builder, metadata_provider, IPA, $, metadata, - navigation, phases, reg, rpc, su, text) { - - /** -@@ -1209,7 +1210,8 @@ exp.association_facet = IPA.association_facet = function (spec, no_init) { - - var pkeys = that.data.result.result[that.get_attribute_name()]; - -- var dialog = IPA.association_adder_dialog({ -+ var dialog = builder.build('association_adder_dialog', { -+ $type: that.other_entity.name, - title: title, - entity: that.entity, - pkey: pkey, -@@ -1675,6 +1677,13 @@ IPA.attr_read_only_evaluator = function(spec) { - return that; - }; - -+// Create a registry for adder dialogs where key is name of 'other entity'. -+// It allows to override dialogs for some specific cases of association -+// creation. -+var dialog_builder = builder.get('association_adder_dialog'); -+dialog_builder.factory = IPA.association_adder_dialog; -+reg.set('association_adder_dialog', dialog_builder.registry); -+ - phases.on('registration', function() { - var w = reg.widget; - var f = reg.field; -diff --git a/install/ui/src/freeipa/dialog.js b/install/ui/src/freeipa/dialog.js -index c153120df..d67d63b6d 100644 ---- a/install/ui/src/freeipa/dialog.js -+++ b/install/ui/src/freeipa/dialog.js -@@ -919,35 +919,7 @@ IPA.adder_dialog = function(spec) { - 'class': 'input-group col-md-12 adder-dialog-top' - }).appendTo(container); - -- var filter_placeholder = text.get('@i18n:association.filter_placeholder'); -- filter_placeholder = filter_placeholder.replace('${other_entity}', -- that.other_entity.metadata.label); -- -- that.filter_field = $('', { -- type: 'text', -- name: 'filter', -- 'class': 'form-control', -- 'placeholder': filter_placeholder, -- keyup: function(event) { -- if (event.keyCode === keys.ENTER) { -- that.search(); -- return false; -- } -- } -- }).appendTo(input_group); -- -- var input_group_btn = $('
', { -- 'class': 'input-group-btn' -- }).appendTo(input_group); -- -- that.find_button = IPA.button({ -- name: 'find', -- label: '@i18n:buttons.filter', -- click: function() { -- that.search(); -- return false; -- } -- }).appendTo(input_group_btn); -+ that.filter_field = that.get_filter_field(input_group); - - var row = $('
', { 'class': 'row adder-dialog-main'}).appendTo(container); - // -@@ -1132,6 +1104,49 @@ IPA.adder_dialog = function(spec) { - return that.filter_field.val(); - }; - -+ /** -+ * Return field for filtering available items -+ * -+ * Default implementation returns text input + "Filter" button. -+ * It can be overridden. -+ * -+ * @param {HTMLElement} input_group - container for a filter field -+ * @return {HTMLElement} -+ */ -+ that.get_filter_field = function(input_group) { -+ var filter_placeholder = text.get( -+ '@i18n:association.filter_placeholder' -+ ).replace('${other_entity}', that.other_entity.metadata.label); -+ -+ var filter_field = $('', { -+ type: 'text', -+ name: 'filter', -+ 'class': 'form-control', -+ 'placeholder': filter_placeholder, -+ keyup: function(event) { -+ if (event.keyCode === keys.ENTER) { -+ that.search(); -+ return false; -+ } -+ } -+ }).appendTo(input_group); -+ -+ var input_group_btn = $('
', { -+ 'class': 'input-group-btn' -+ }).appendTo(input_group); -+ -+ that.find_button = IPA.button({ -+ name: 'find', -+ label: '@i18n:buttons.filter', -+ click: function() { -+ that.search(); -+ return false; -+ } -+ }).appendTo(input_group_btn); -+ -+ return filter_field; -+ }; -+ - /** - * Clear rows in available table - */ -diff --git a/install/ui/src/freeipa/group.js b/install/ui/src/freeipa/group.js -index e46d8c7e3..2984bd4b2 100644 ---- a/install/ui/src/freeipa/group.js -+++ b/install/ui/src/freeipa/group.js -@@ -205,6 +205,20 @@ return { - add_title: '@i18n:objects.group.add_into_sudo', - remove_method: 'remove_user', - remove_title: '@i18n:objects.group.remove_from_sudo' -+ }, -+ { -+ $type: 'association', -+ name: 'member_idoverrideuser', -+ associator: IPA.serial_associator, -+ add_title: '@i18n:objects.group.add_idoverride_user', -+ remove_title: '@i18n:objects.group.remove_idoverride_users', -+ columns: [ -+ { -+ name: 'ipaanchoruuid', -+ label: '@i18n:objects.idoverrideuser.anchor_label', -+ link: false -+ } -+ ] - } - ], - standard_association_facets: true, -diff --git a/install/ui/src/freeipa/idviews.js b/install/ui/src/freeipa/idviews.js -index 35dc998c8..a4fca6205 100644 ---- a/install/ui/src/freeipa/idviews.js -+++ b/install/ui/src/freeipa/idviews.js -@@ -966,6 +966,58 @@ idviews.unapply_action = function(spec) { - return that; - }; - -+idviews.idoverrideuser_adder_dialog = function(spec) { -+ -+ spec = spec || {}; -+ -+ var that = IPA.association_adder_dialog(spec); -+ -+ that.base_search = that.search; -+ -+ that.search = function() { -+ // Search for users only in case a ID view is selected -+ if (that.get_filter()) { -+ that.base_search(); -+ } -+ }; -+ -+ /** -+ * Replace default text filter with a select box for filtering by ID view -+ */ -+ that.get_filter_field = function(input_group) { -+ -+ var filter_field = $('