[evolution] Bug 790666 - Comma in Full Name breaks meeting organizer validity check



commit f654d4c9bf7ea5371dfadb07a2ae1267eb7d2029
Author: Milan Crha <mcrha redhat com>
Date:   Wed Nov 29 18:18:31 2017 +0100

    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 971acc8..bfba1d9 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 38dea7c..64a5436 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);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]