diff options
-rw-r--r-- | install/ui/dns.js | 19 | ||||
-rw-r--r-- | install/ui/host.js | 33 | ||||
-rw-r--r-- | install/ui/ipa.js | 40 |
3 files changed, 59 insertions, 33 deletions
diff --git a/install/ui/dns.js b/install/ui/dns.js index ddd9da03..42002192 100644 --- a/install/ui/dns.js +++ b/install/ui/dns.js @@ -982,11 +982,14 @@ IPA.dns.record_entity = function(spec) { IPA.dns.record_adder_dialog = function(spec) { spec = spec || {}; + spec.retry = spec.retry !== undefined ? spec.retry : false; IPA.dns.record_prepare_spec(spec, IPA.dns.record_prepare_editor_for_type); var that = IPA.entity_adder_dialog(spec); + that.on_error = IPA.create_4304_error_handler(that); + return that; }; @@ -1621,6 +1624,7 @@ IPA.dns.record_type_table_widget = function(spec) { entity: that.entity, fields: [], widgets: [], + retry: false, title: title.replace('${entity}', label) }; @@ -1635,6 +1639,8 @@ IPA.dns.record_type_table_widget = function(spec) { var cancel_button = dialog.buttons.get('cancel'); dialog.buttons.empty(); + dialog.on_error = IPA.create_4304_error_handler(dialog); + dialog.create_button({ name: 'add', label: IPA.messages.buttons.add, @@ -1642,7 +1648,12 @@ IPA.dns.record_type_table_widget = function(spec) { dialog.hide_message(); dialog.add( function(data, text_status, xhr) { - that.reload_facet(data); + + if (data.result.result.dnsrecords) { + that.reload_facet(data); + } else { + that.refresh_facet(); + } dialog.close(); }, dialog.on_error); @@ -1661,7 +1672,11 @@ IPA.dns.record_type_table_widget = function(spec) { message = message.replace('${entity}', label); dialog.show_message(message); - that.reload_facet(data); + if (data.result.result.dnsrecords) { + that.reload_facet(data); + } else { + that.refresh_facet(); + } dialog.reset(); }, dialog.on_error); diff --git a/install/ui/host.js b/install/ui/host.js index f2b84529..6f9e3577 100644 --- a/install/ui/host.js +++ b/install/ui/host.js @@ -347,7 +347,7 @@ IPA.widget_factories['host_fqdn'] = IPA.host_fqdn_widget; IPA.host_adder_dialog = function(spec) { spec = spec || {}; - spec.retry = typeof spec.retry !== 'undefined' ? spec.retry : false; + spec.retry = spec.retry !== undefined ? spec.retry : false; var that = IPA.entity_adder_dialog(spec); @@ -356,36 +356,7 @@ IPA.host_adder_dialog = function(spec) { that.container.addClass('host-adder-dialog'); }; - that.on_error = function(xhr, text_status, error_thrown) { - var ajax = this; - var command = that.command; - var data = error_thrown.data; - var dialog = null; - - if(data && data.error && data.error.code === 4304) { - dialog = IPA.message_dialog({ - message: data.error.message, - title: spec.title, - on_ok: function() { - data.result = { - result: { - fqdn: command.args[0] - } - }; - command.on_success.call(ajax, data, text_status, xhr); - } - }); - } else { - dialog = IPA.error_dialog({ - xhr: xhr, - text_status: text_status, - error_thrown: error_thrown, - command: command - }); - } - - dialog.open(that.container); - }; + that.on_error = IPA.create_4304_error_handler(that); return that; }; diff --git a/install/ui/ipa.js b/install/ui/ipa.js index 441e6468..d1bb0421 100644 --- a/install/ui/ipa.js +++ b/install/ui/ipa.js @@ -1178,6 +1178,46 @@ IPA.error_list = function() { return that; }; +IPA.create_4304_error_handler = function(adder_dialog) { + + var set_pkey = function(result) { + + var pkey_name = adder_dialog.entity.metadata.primary_key; + var args = adder_dialog.command.args; + var pkey = args[args.length-1]; + result[pkey_name] = pkey; + }; + + return function (xhr, text_status, error_thrown) { + + var ajax = this; + var command = adder_dialog.command; + var data = error_thrown.data; + var dialog = null; + + if (data && data.error && data.error.code === 4304) { + dialog = IPA.message_dialog({ + message: data.error.message, + title: adder_dialog.title, + on_ok: function() { + data.result = { result: {} }; + set_pkey(data.result.result); + command.on_success.call(ajax, data, text_status, xhr); + } + }); + } else { + dialog = IPA.error_dialog({ + xhr: xhr, + text_status: text_status, + error_thrown: error_thrown, + command: command + }); + } + + dialog.open(adder_dialog.container); + }; +}; + IPA.limit_text = function(value, max_length) { if (!value) return ''; |