From f654d4c9bf7ea5371dfadb07a2ae1267eb7d2029 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Wed, 29 Nov 2017 18:18:31 +0100 Subject: [PATCH] Bug 790666 - Comma in Full Name breaks meeting organizer validity check --- src/calendar/gui/e-comp-editor-page-general.c | 14 ++++++++----- src/calendar/gui/itip-utils.c | 21 +++++-------------- 2 files changed, 14 insertions(+), 21 deletions(-) diff --git a/src/calendar/gui/e-comp-editor-page-general.c b/src/calendar/gui/e-comp-editor-page-general.c index 971acc855c..bfba1d9418 100644 --- a/src/calendar/gui/e-comp-editor-page-general.c +++ b/src/calendar/gui/e-comp-editor-page-general.c @@ -408,7 +408,8 @@ ecep_general_attendee_added_cb (EMeetingListView *meeting_list_view, static gboolean ecep_general_get_organizer (ECompEditorPageGeneral *page_general, gchar **out_name, - gchar **out_mailto) + gchar **out_mailto, + const gchar **out_error_message) { gchar *organizer_text; gboolean valid = FALSE; @@ -429,6 +430,8 @@ ecep_general_get_organizer (ECompEditorPageGeneral *page_general, *out_name = g_strdup (str_name); if (out_mailto) *out_mailto = g_strconcat ("MAILTO:", itip_strip_mailto (str_address), NULL); + } else if (out_error_message) { + *out_error_message = _("Organizer address is not a valid user mail address"); } g_object_unref (address); @@ -820,7 +823,7 @@ ecep_general_fill_widgets (ECompEditorPage *page, cn = icalparameter_get_cn (param); if (cn && *cn) { - value = g_strdup_printf ("%s <%s>", cn, itip_strip_mailto (organizer)); + value = camel_internet_address_format_address (cn, itip_strip_mailto (organizer)); } } @@ -932,15 +935,16 @@ ecep_general_fill_component (ECompEditorPage *page, gchar *organizer_name = NULL, *organizer_mailto = NULL; guint32 flags; gint ii, added_attendees = 0; + const gchar *error_message = NULL; comp_editor = e_comp_editor_page_ref_editor (page); flags = e_comp_editor_get_flags (comp_editor); if ((flags & (E_COMP_EDITOR_FLAG_IS_NEW | E_COMP_EDITOR_FLAG_ORGANIZER_IS_USER)) != 0 && - !ecep_general_get_organizer (page_general, NULL, NULL)) { + !ecep_general_get_organizer (page_general, NULL, NULL, &error_message)) { e_comp_editor_set_validation_error (comp_editor, page, page_general->priv->organizer_combo_box, - _("An organizer is required.")); + error_message ? error_message : _("An organizer is required.")); g_clear_object (&comp_editor); @@ -959,7 +963,7 @@ ecep_general_fill_component (ECompEditorPage *page, /* Organizer */ if ((flags & (E_COMP_EDITOR_FLAG_IS_NEW | E_COMP_EDITOR_FLAG_ORGANIZER_IS_USER)) != 0 && - ecep_general_get_organizer (page_general, &organizer_name, &organizer_mailto)) { + ecep_general_get_organizer (page_general, &organizer_name, &organizer_mailto, NULL)) { const gchar *cal_email_address; icalparameter *param; diff --git a/src/calendar/gui/itip-utils.c b/src/calendar/gui/itip-utils.c index 38dea7c538..64a5436b9f 100644 --- a/src/calendar/gui/itip-utils.c +++ b/src/calendar/gui/itip-utils.c @@ -185,12 +185,8 @@ itip_get_user_identities (ESourceRegistry *registry) name = e_source_mail_identity_get_name (extension); address = e_source_mail_identity_get_address (extension); - if (address) { - if (name && *name) - g_ptr_array_add (identities, g_strdup_printf ("%s <%s>", name, address)); - else - g_ptr_array_add (identities, g_strdup_printf ("%s", address)); - } + if (address) + g_ptr_array_add (identities, camel_internet_address_format_address (name, address)); aliases = e_source_mail_identity_dup_aliases (extension); if (aliases && *aliases) { @@ -208,10 +204,7 @@ itip_get_user_identities (ESourceRegistry *registry) if (!alias_name || !*alias_name) alias_name = name; - if (alias_name && *alias_name) - g_ptr_array_add (identities, g_strdup_printf ("%s <%s>", alias_name, alias_address)); - else - g_ptr_array_add (identities, g_strdup_printf ("%s", alias_address)); + g_ptr_array_add (identities, camel_internet_address_format_address (alias_name, alias_address)); } } } @@ -269,12 +262,8 @@ itip_get_fallback_identity (ESourceRegistry *registry) name = e_source_mail_identity_get_name (mail_identity); address = e_source_mail_identity_get_address (mail_identity); - if (address != NULL) { - if (name && *name) - identity = g_strdup_printf ("%s <%s>", name, address); - else - identity = g_strdup_printf ("%s", address); - } + if (address) + identity = camel_internet_address_format_address (name, address); g_object_unref (source);