[evolution-patches] Fix for #59352 - organizer property not being handled in meeting items
- From: Harish Krishnaswamy <kharish novell com>
- To: patches <evolution-patches lists ximian com>
- Subject: [evolution-patches] Fix for #59352 - organizer property not being handled in meeting items
- Date: Tue, 15 Jun 2004 18:34:10 +0530
A patch for #59352 - adds the organizer property as an explicit <from>
element on the <distribution> element. The assumption that the server
uses the <from> the <recipients> element to identify the organizer was
invalid.
regards,
harish
Index: servers/groupwise/ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution-data-server/servers/groupwise/ChangeLog,v
retrieving revision 1.54
diff -u -p -r1.54 ChangeLog
--- servers/groupwise/ChangeLog 15 Jun 2004 09:28:28 -0000 1.54
+++ servers/groupwise/ChangeLog 15 Jun 2004 12:59:30 -0000
@@ -1,3 +1,18 @@
+2004-06-15 Harish Krishnaswamy <kharish novell com>
+
+ Fixes #59352
+ * e-gw-item.c:
+ (e_gw_item_init), (e_gw_item_dispose),
+ (e_gw_item_new_from_soap_parameter), (e_gw_item_get_organizer),
+ (e_gw_item_set_organizer), (add_distribution_to_soap_message):
+ Convert EGwItemOrganizer to/from the <from> soap element.
+
+ (e_gw_item_append_to_soap_message): Add the <from> element explicitly
+ to <distribution> element, in addition to the <recipients> element.
+
+ * e-gw-item.h: Add EGwItemOrganizer structure and get/set functions
+ for the same.
+
2004-06-15 Sivaiah Nallagatla <snallagatla novell com>
* e-gw-item.h : added "name" member ot EGroupMember structure
Index: servers/groupwise/e-gw-item.h
===================================================================
RCS file:
/cvs/gnome/evolution-data-server/servers/groupwise/e-gw-item.h,v
retrieving revision 1.14
diff -u -p -r1.14 e-gw-item.h
--- servers/groupwise/e-gw-item.h 14 Jun 2004 05:53:23 -0000 1.14
+++ servers/groupwise/e-gw-item.h 15 Jun 2004 12:59:30 -0000
@@ -97,6 +97,11 @@ typedef struct {
char *email;
} EGroupMember;
+typedef struct {
+ char *email;
+ char *display_name;
+} EGwItemOrganizer;
+
GType e_gw_item_get_type (void);
EGwItem *e_gw_item_new_empty (void);
EGwItem *e_gw_item_new_from_soap_parameter (const char *container,
SoupSoapParameter *param);
@@ -167,6 +172,10 @@ void e_gw_item_set_priority (EGwI
GSList *e_gw_item_get_recipient_list (EGwItem *item);
void e_gw_item_set_recipient_list (EGwItem *item, GSList
*new_recipient_list);
+
+EGwItemOrganizer *e_gw_item_get_organizer (EGwItem *item);
+void e_gw_item_set_organizer (EGwItem *item, EGwItemOrganizer
*organizer);
+
GSList *e_gw_item_get_recurrence_dates (EGwItem *item);
void e_gw_item_set_recurrence_dates (EGwItem *item, GSList
*new_recurrence_dates);
Index: servers/groupwise/e-gw-item.c
===================================================================
RCS file:
/cvs/gnome/evolution-data-server/servers/groupwise/e-gw-item.c,v
retrieving revision 1.37
diff -u -p -r1.37 e-gw-item.c
--- servers/groupwise/e-gw-item.c 14 Jun 2004 05:53:23 -0000 1.37
+++ servers/groupwise/e-gw-item.c 15 Jun 2004 12:59:31 -0000
@@ -52,6 +52,7 @@ struct _EGwItemPrivate {
GSList *recipient_list;
GSList *recurrence_dates;
int trigger; /* alarm */
+ EGwItemOrganizer *organizer;
/* properties for tasks/calendars */
char *icalid;
@@ -226,6 +227,10 @@ e_gw_item_dispose (GObject *object)
g_slist_free (priv->recipient_list);
priv->recipient_list = NULL;
}
+ if (priv->organizer) {
+ g_free (priv->organizer);
+ priv->organizer = NULL;
+ }
if (priv->recurrence_dates) {
g_slist_foreach (priv->recurrence_dates, free_string, NULL);
g_slist_free (priv->recurrence_dates);
@@ -317,6 +322,7 @@ e_gw_item_init (EGwItem *item, EGwItemCl
priv->due_date = NULL;
priv->trigger = 0;
priv->recipient_list = NULL;
+ priv->organizer = NULL;
priv->recurrence_dates = NULL;
priv->completed = FALSE;
priv->im_list = NULL;
@@ -1332,6 +1338,19 @@ e_gw_item_new_from_soap_parameter (const
item->priv->recipient_list = NULL;
set_recipient_list_from_soap_parameter
(&item->priv->recipient_list, tp);
}
+ tp = soup_soap_parameter_get_first_child_by_name (child, "from");
+ if (tp) {
+ SoupSoapParameter *subparam;
+ EGwItemOrganizer *organizer = g_new0 (EGwItemOrganizer, 1);
+
+ subparam = soup_soap_parameter_get_first_child_by_name (tp,
"displayName");
+ if (subparam)
+ organizer->display_name = soup_soap_parameter_get_string_value
(subparam);
+ subparam = soup_soap_parameter_get_first_child_by_name (tp,
"email");
+ if (subparam)
+ organizer->email = soup_soap_parameter_get_string_value
(subparam);
+ e_gw_item_set_organizer (item, organizer);
+ }
} else if (!g_ascii_strcasecmp (name, "dueDate")) {
char *formatted_date;
@@ -1679,6 +1698,21 @@ e_gw_item_set_recipient_list (EGwItem *
item->priv->recipient_list = new_recipient_list;
}
+EGwItemOrganizer *
+e_gw_item_get_organizer (EGwItem *item)
+{
+ g_return_val_if_fail (E_IS_GW_ITEM (item), NULL);
+ return item->priv->organizer;
+}
+
+void
+e_gw_item_set_organizer (EGwItem *item, EGwItemOrganizer *organizer)
+{
+ /* free organizer */
+ g_free (item->priv->organizer);
+ item->priv->organizer = organizer;
+}
+
GSList *
e_gw_item_get_recurrence_dates (EGwItem *item)
{
@@ -1713,13 +1747,21 @@ e_gw_item_set_trigger (EGwItem *item, in
}
static void
-add_distribution_to_soap_message (GSList *recipient_list,
SoupSoapMessage *msg)
+add_distribution_to_soap_message (EGwItemOrganizer *organizer, GSList
*recipient_list, SoupSoapMessage *msg)
{
GSList *rl;
/* start distribution element */
soup_soap_message_start_element (msg, "distribution", NULL, NULL);
- /*FIXME Add the from element to identify the organizer */
+ if (organizer) {
+ soup_soap_message_start_element (msg, "from", NULL, NULL);
+ e_gw_message_write_string_parameter (msg, "displayName", NULL,
+ organizer->display_name ? organizer->display_name : "");
+ e_gw_message_write_string_parameter (msg, "email", NULL,
+ organizer->email ? organizer->email : "");
+
+ soup_soap_message_end_element (msg);
+ }
/* start recipients */
soup_soap_message_start_element (msg, "recipients", NULL, NULL);
/* add each recipient */
@@ -1782,7 +1824,7 @@ e_gw_item_append_to_soap_message (EGwIte
g_free (alarm);
}
if (priv->recipient_list != NULL)
- add_distribution_to_soap_message (priv->recipient_list, msg);
+ add_distribution_to_soap_message (priv->organizer,
priv->recipient_list, msg);
if (priv->end_date) {
e_gw_message_write_string_parameter (msg, "endDate", NULL,
priv->end_date);
} else
Index: calendar/ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution-data-server/calendar/ChangeLog,v
retrieving revision 1.291
diff -u -p -r1.291 ChangeLog
--- calendar/ChangeLog 14 Jun 2004 16:30:25 -0000 1.291
+++ calendar/ChangeLog 15 Jun 2004 12:59:32 -0000
@@ -1,3 +1,11 @@
+2004-06-15 Harish Krishnaswamy <kharish novell com>
+
+ Fixes #59352
+ * backends/groupwise/e-cal-backend-groupwise-utils.c:
+ (set_properties_from_cal_component), (e_gw_item_to_cal_component):
+ Handle the organizer property of ecal and allow storing to and
+ from e-gw-item.
+
2004-06-14 Rodrigo Moya <rodrigo novell com>
Fixes #57088
Index: calendar/backends/groupwise/e-cal-backend-groupwise-utils.c
===================================================================
RCS file:
/cvs/gnome/evolution-data-server/calendar/backends/groupwise/e-cal-backend-groupwise-utils.c,v
retrieving revision 1.21
diff -u -p -r1.21 e-cal-backend-groupwise-utils.c
--- calendar/backends/groupwise/e-cal-backend-groupwise-utils.c 14 Jun
2004 05:53:23 -0000 1.21
+++ calendar/backends/groupwise/e-cal-backend-groupwise-utils.c 15 Jun
2004 12:59:32 -0000
@@ -264,10 +264,25 @@ set_properties_from_cal_component (EGwIt
e_gw_item_set_recipient_list (item, recipient_list);
}
+
+ if (e_cal_component_has_organizer (comp)) {
+ ECalComponentOrganizer *cal_organizer;
+ EGwItemOrganizer *organizer = NULL;
+
+ e_cal_component_get_organizer (comp, cal_organizer);
+ if (cal_organizer) {
+ organizer = g_new0 (EGwItemOrganizer, 1);
+ organizer->display_name = g_strdup (cal_organizer->cn);
+ organizer->email = g_strdup (cal_organizer->value + 7);
+ e_gw_item_set_organizer (item, organizer);
+ }
+ }
+
+
/* check if recurrences exist and update the item */
if (e_cal_component_has_recurrences (comp)) {
- GSList *recur_dates = NULL, *tmp;
+ GSList *recur_dates = NULL;
e_cal_recur_generate_instances (comp, -1, -1,
@@ -307,6 +322,7 @@ e_gw_item_to_cal_component (EGwItem *ite
int percent;
int alarm_duration;
GSList *recipient_list, *rl, *attendee_list = NULL;
+ EGwItemOrganizer *organizer;
EGwItemType item_type;
g_return_val_if_fail (E_IS_GW_ITEM (item), NULL);
@@ -442,6 +458,17 @@ e_gw_item_to_cal_component (EGwItem *ite
}
e_cal_component_set_attendee_list (comp, attendee_list);
+ }
+
+ /* set organizer if it exists */
+ organizer = e_gw_item_get_organizer (item);
+ if (organizer) {
+ ECalComponentOrganizer *cal_organizer;
+
+ cal_organizer = g_new0 (ECalComponentOrganizer, 1);
+ cal_organizer->cn = g_strdup (organizer->display_name);
+ cal_organizer->value = g_strconcat("MAILTO:", organizer->email,
NULL);
+ e_cal_component_set_organizer (comp, cal_organizer);
}
/* set specific properties */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]