Accepting request 17850 from GNOME:Factory
Copy from GNOME:Factory/evolution-data-server based on submit request 17850 from user vuntz OBS-URL: https://build.opensuse.org/request/show/17850 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/evolution-data-server?expand=0&rev=62
This commit is contained in:
committed by
Git OBS Bridge
parent
0b2705396f
commit
4d448165d9
@@ -1,432 +0,0 @@
|
||||
Index: servers/groupwise/e-gw-connection.h
|
||||
===================================================================
|
||||
--- servers/groupwise/e-gw-connection.h.orig
|
||||
+++ servers/groupwise/e-gw-connection.h
|
||||
@@ -129,6 +129,7 @@ char *e_gw_connection_form
|
||||
|
||||
|
||||
EGwConnectionStatus e_gw_connection_create_item (EGwConnection *cnc, EGwItem *item, char** id);
|
||||
+EGwConnectionStatus e_gw_connection_create_items (EGwConnection *cnc, EGwItem *item, GSList **ids);
|
||||
EGwConnectionStatus e_gw_connection_get_item (EGwConnection *cnc, const char *container, const char *id, const char *view, EGwItem **item);
|
||||
EGwConnectionStatus e_gw_connection_modify_item (EGwConnection *cnc, const char *id, EGwItem *item);
|
||||
EGwConnectionStatus e_gw_connection_accept_request (EGwConnection *cnc, const char *id, const char *accept_level, const char *accept_comment, const char *recurrence_key);
|
||||
Index: servers/groupwise/e-gw-connection.c
|
||||
===================================================================
|
||||
--- servers/groupwise/e-gw-connection.c.orig
|
||||
+++ servers/groupwise/e-gw-connection.c
|
||||
@@ -1366,11 +1366,24 @@ e_gw_connection_send_item (EGwConnection
|
||||
}
|
||||
|
||||
EGwConnectionStatus
|
||||
-e_gw_connection_create_item (EGwConnection *cnc, EGwItem *item, char** id)
|
||||
+e_gw_connection_create_item (EGwConnection *cnc, EGwItem *item, char** id)
|
||||
+{
|
||||
+ GSList *ids = NULL;
|
||||
+ EGwConnectionStatus status;
|
||||
+
|
||||
+ status = e_gw_connection_create_items (cnc, item, &ids);
|
||||
+
|
||||
+ if (status == E_GW_CONNECTION_STATUS_OK)
|
||||
+ *id = ids->data;
|
||||
+
|
||||
+ return status;
|
||||
+}
|
||||
+
|
||||
+EGwConnectionStatus
|
||||
+e_gw_connection_create_items (EGwConnection *cnc, EGwItem *item, GSList **id_list)
|
||||
{
|
||||
SoupSoapMessage *msg;
|
||||
SoupSoapResponse *response;
|
||||
- SoupSoapParameter *param;
|
||||
EGwConnectionStatus status = E_GW_CONNECTION_STATUS_UNKNOWN;
|
||||
|
||||
g_return_val_if_fail (E_IS_GW_CONNECTION (cnc), E_GW_CONNECTION_STATUS_INVALID_CONNECTION);
|
||||
@@ -1399,10 +1412,17 @@ e_gw_connection_create_item (EGwConnecti
|
||||
}
|
||||
|
||||
status = e_gw_connection_parse_response_status (response);
|
||||
- if (status == E_GW_CONNECTION_STATUS_OK) {
|
||||
- param = soup_soap_response_get_first_parameter_by_name (response, "id");
|
||||
- if (param != NULL)
|
||||
- *id = soup_soap_parameter_get_string_value (param);
|
||||
+ if (status == E_GW_CONNECTION_STATUS_OK && id_list) {
|
||||
+ SoupSoapParameter *param;
|
||||
+
|
||||
+ *id_list = NULL;
|
||||
+ /* get the generated ID from the SOAP response */
|
||||
+ // for loop here to populate the list_ids.
|
||||
+ for (param = soup_soap_response_get_first_parameter_by_name (response, "id");
|
||||
+ param; param = soup_soap_response_get_next_parameter_by_name (response, param, "id")) {
|
||||
+
|
||||
+ *id_list = g_slist_append (*id_list, soup_soap_parameter_get_string_value (param));
|
||||
+ }
|
||||
} else if (status == E_GW_CONNECTION_STATUS_INVALID_CONNECTION)
|
||||
reauthenticate (cnc);
|
||||
|
||||
Index: calendar/backends/groupwise/e-cal-backend-groupwise-utils.c
|
||||
===================================================================
|
||||
--- calendar/backends/groupwise/e-cal-backend-groupwise-utils.c.orig
|
||||
+++ calendar/backends/groupwise/e-cal-backend-groupwise-utils.c
|
||||
@@ -1421,14 +1421,14 @@ e_gw_item_to_cal_component (EGwItem *ite
|
||||
}
|
||||
|
||||
EGwConnectionStatus
|
||||
-e_gw_connection_send_appointment (ECalBackendGroupwise *cbgw, const char *container, ECalComponent *comp, icalproperty_method method, gboolean all_instances, ECalComponent **created_comp, icalparameter_partstat *pstatus)
|
||||
+e_gw_connection_send_appointment (ECalBackendGroupwise *cbgw, const char *c_gw_id, ECalComponent *comp, icalproperty_method method, gboolean all_instances, ECalComponent **created_comp, icalparameter_partstat *pstatus, gboolean *is_import)
|
||||
{
|
||||
EGwConnection *cnc;
|
||||
EGwConnectionStatus status;
|
||||
icalparameter_partstat partstat;
|
||||
char *item_id = NULL;
|
||||
const char *gw_id;
|
||||
- const char *recurrence_key = NULL;
|
||||
+ const char *recurrence_key = NULL, *container;
|
||||
gboolean need_to_get = FALSE, decline = FALSE;
|
||||
ECalComponentVType type;
|
||||
|
||||
@@ -1438,25 +1438,29 @@ e_gw_connection_send_appointment (ECalBa
|
||||
|
||||
e_cal_component_commit_sequence (comp);
|
||||
type = e_cal_component_get_vtype (comp);
|
||||
+ container = e_cal_backend_groupwise_get_container_id (cbgw);
|
||||
|
||||
gw_id = e_cal_component_get_gw_id (comp);
|
||||
|
||||
- switch (type) {
|
||||
+ if (gw_id) {
|
||||
+ switch (type) {
|
||||
|
||||
- case E_CAL_COMPONENT_EVENT:
|
||||
- case E_CAL_COMPONENT_TODO:
|
||||
- case E_CAL_COMPONENT_JOURNAL:
|
||||
- if (!g_str_has_suffix (gw_id, container)) {
|
||||
- item_id = g_strconcat (e_cal_component_get_gw_id (comp), GW_EVENT_TYPE_ID, container, NULL);
|
||||
- need_to_get = TRUE;
|
||||
+ case E_CAL_COMPONENT_EVENT:
|
||||
+ case E_CAL_COMPONENT_TODO:
|
||||
+ case E_CAL_COMPONENT_JOURNAL:
|
||||
+ if (!g_str_has_suffix (gw_id, container)) {
|
||||
+ item_id = g_strconcat (e_cal_component_get_gw_id (comp), GW_EVENT_TYPE_ID, container, NULL);
|
||||
+ need_to_get = TRUE;
|
||||
|
||||
- }
|
||||
- else
|
||||
- item_id = g_strdup (gw_id);
|
||||
- break;
|
||||
- default:
|
||||
- return E_GW_CONNECTION_STATUS_INVALID_OBJECT;
|
||||
- }
|
||||
+ }
|
||||
+ else
|
||||
+ item_id = g_strdup (gw_id);
|
||||
+ break;
|
||||
+ default:
|
||||
+ return E_GW_CONNECTION_STATUS_INVALID_OBJECT;
|
||||
+ }
|
||||
+ } else if (c_gw_id)
|
||||
+ item_id = g_strdup (c_gw_id);
|
||||
|
||||
if (all_instances)
|
||||
e_cal_component_get_uid (comp, &recurrence_key);
|
||||
@@ -1529,6 +1533,13 @@ e_gw_connection_send_appointment (ECalBa
|
||||
break;
|
||||
}
|
||||
*pstatus = partstat;
|
||||
+
|
||||
+ /* The item is not in the calendar, so we need to import the item */
|
||||
+ if (!item_id) {
|
||||
+ *is_import = TRUE;
|
||||
+ return E_GW_CONNECTION_STATUS_OK;
|
||||
+ }
|
||||
+
|
||||
switch (partstat) {
|
||||
ECalComponentTransparency transp;
|
||||
|
||||
@@ -1587,41 +1598,20 @@ e_gw_connection_send_appointment (ECalBa
|
||||
}
|
||||
|
||||
EGwConnectionStatus
|
||||
-e_gw_connection_create_appointment (EGwConnection *cnc, const char *container, ECalBackendGroupwise *cbgw, ECalComponent *comp, GSList **id_list)
|
||||
+e_gw_connection_create_appointment (EGwConnection *cnc, const char *container, ECalBackendGroupwise *cbgw, ECalComponent *comp, GSList **id_list, gboolean personal)
|
||||
{
|
||||
EGwItem *item;
|
||||
EGwConnectionStatus status;
|
||||
- icalproperty *icalprop;
|
||||
- gboolean move_cal = FALSE;
|
||||
- icalcomponent *icalcomp;
|
||||
- char *id = NULL;
|
||||
|
||||
g_return_val_if_fail (E_IS_GW_CONNECTION (cnc), E_GW_CONNECTION_STATUS_INVALID_CONNECTION);
|
||||
g_return_val_if_fail (E_IS_CAL_COMPONENT (comp), E_GW_CONNECTION_STATUS_INVALID_OBJECT);
|
||||
|
||||
- icalcomp = e_cal_component_get_icalcomponent (comp);
|
||||
-
|
||||
- icalprop = icalcomponent_get_first_property (icalcomp, ICAL_X_PROPERTY);
|
||||
- while (icalprop) {
|
||||
- const char *x_name;
|
||||
-
|
||||
- x_name = icalproperty_get_x_name (icalprop);
|
||||
- if (!strcmp (x_name, "X-EVOLUTION-MOVE-CALENDAR")) {
|
||||
- move_cal = TRUE;
|
||||
- break;
|
||||
- }
|
||||
-
|
||||
- icalprop = icalcomponent_get_next_property (icalcomp, ICAL_X_PROPERTY);
|
||||
- }
|
||||
-
|
||||
item = e_gw_item_new_from_cal_component (container, cbgw, comp);
|
||||
e_gw_item_set_container_id (item, container);
|
||||
- if (!move_cal)
|
||||
+ if (!personal)
|
||||
status = e_gw_connection_send_item (cnc, item, id_list);
|
||||
else {
|
||||
- e_gw_item_set_source (item, "personal");
|
||||
- status = e_gw_connection_create_item (cnc, item, &id);
|
||||
- *id_list = g_slist_append (*id_list, id);
|
||||
+ status = e_gw_connection_create_items (cnc, item, id_list);
|
||||
}
|
||||
g_object_unref (item);
|
||||
|
||||
Index: calendar/backends/groupwise/e-cal-backend-groupwise.c
|
||||
===================================================================
|
||||
--- calendar/backends/groupwise/e-cal-backend-groupwise.c.orig
|
||||
+++ calendar/backends/groupwise/e-cal-backend-groupwise.c
|
||||
@@ -130,6 +130,15 @@ e_cal_backend_groupwise_get_categories_b
|
||||
return cbgw->priv->categories_by_id;
|
||||
}
|
||||
|
||||
+const char *
|
||||
+e_cal_backend_groupwise_get_container_id (ECalBackendGroupwise *cbgw)
|
||||
+{
|
||||
+
|
||||
+ g_return_val_if_fail (E_IS_CAL_BACKEND_GROUPWISE (cbgw), NULL);
|
||||
+
|
||||
+ return cbgw->priv->container_id;
|
||||
+}
|
||||
+
|
||||
GHashTable *
|
||||
e_cal_backend_groupwise_get_categories_by_name (ECalBackendGroupwise *cbgw) {
|
||||
|
||||
@@ -2013,6 +2022,31 @@ update_from_server (ECalBackendGroupwise
|
||||
return E_GW_CONNECTION_STATUS_OK;
|
||||
}
|
||||
|
||||
+
|
||||
+static gboolean
|
||||
+check_for_move (ECalComponent *comp)
|
||||
+{
|
||||
+ gboolean personal = FALSE;
|
||||
+ icalcomponent *icalcomp;
|
||||
+ icalproperty *icalprop;
|
||||
+
|
||||
+ icalcomp = e_cal_component_get_icalcomponent (comp);
|
||||
+ icalprop = icalcomponent_get_first_property (icalcomp, ICAL_X_PROPERTY);
|
||||
+
|
||||
+ while (icalprop) {
|
||||
+ const char *x_name;
|
||||
+
|
||||
+ x_name = icalproperty_get_x_name (icalprop);
|
||||
+ if (!strcmp (x_name, "X-EVOLUTION-MOVE-CALENDAR")) {
|
||||
+ personal = TRUE;
|
||||
+ break;
|
||||
+ }
|
||||
+ icalprop = icalcomponent_get_next_property (icalcomp, ICAL_X_PROPERTY);
|
||||
+ }
|
||||
+
|
||||
+ return personal;
|
||||
+}
|
||||
+
|
||||
static ECalBackendSyncStatus
|
||||
e_cal_backend_groupwise_create_object (ECalBackendSync *backend, EDataCal *cal, char **calobj, char **uid)
|
||||
{
|
||||
@@ -2022,6 +2056,7 @@ e_cal_backend_groupwise_create_object (E
|
||||
ECalComponent *comp;
|
||||
EGwConnectionStatus status;
|
||||
GSList *uid_list = NULL;
|
||||
+ gboolean personal = FALSE;
|
||||
|
||||
cbgw = E_CAL_BACKEND_GROUPWISE (backend);
|
||||
priv = cbgw->priv;
|
||||
@@ -2051,11 +2086,13 @@ e_cal_backend_groupwise_create_object (E
|
||||
switch (priv->mode) {
|
||||
case CAL_MODE_ANY :
|
||||
case CAL_MODE_REMOTE :
|
||||
+ personal = check_for_move (comp);
|
||||
+
|
||||
/* when online, send the item to the server */
|
||||
- status = e_gw_connection_create_appointment (priv->cnc, priv->container_id, cbgw, comp, &uid_list);
|
||||
+ status = e_gw_connection_create_appointment (priv->cnc, priv->container_id, cbgw, comp, &uid_list, personal);
|
||||
|
||||
if (status == E_GW_CONNECTION_STATUS_INVALID_CONNECTION)
|
||||
- status = e_gw_connection_create_appointment (priv->cnc, priv->container_id, cbgw, comp, &uid_list);
|
||||
+ status = e_gw_connection_create_appointment (priv->cnc, priv->container_id, cbgw, comp, &uid_list, personal);
|
||||
|
||||
if (status != E_GW_CONNECTION_STATUS_OK) {
|
||||
g_object_unref (comp);
|
||||
@@ -2513,6 +2550,88 @@ change_status (ECalComponent *comp, ical
|
||||
}
|
||||
}
|
||||
|
||||
+
|
||||
+static ECalBackendSyncStatus
|
||||
+import_items (ECalBackendGroupwise *cbgw, ECalComponent *comp)
|
||||
+{
|
||||
+ EGwConnectionStatus status;
|
||||
+ ECalBackendGroupwisePrivate *priv;
|
||||
+ GSList *uid_list = NULL;
|
||||
+ gboolean personal = TRUE;
|
||||
+
|
||||
+ priv = cbgw->priv;
|
||||
+
|
||||
+ status = e_gw_connection_create_appointment (priv->cnc, priv->container_id, cbgw, comp, &uid_list, personal);
|
||||
+ if (status == E_GW_CONNECTION_STATUS_INVALID_CONNECTION)
|
||||
+ status = e_gw_connection_create_appointment (priv->cnc, priv->container_id, cbgw, comp, &uid_list, personal);
|
||||
+
|
||||
+ if (status != E_GW_CONNECTION_STATUS_OK) {
|
||||
+ if (status == E_GW_CONNECTION_STATUS_UNKNOWN_USER)
|
||||
+ return GNOME_Evolution_Calendar_UnknownUser;
|
||||
+ else
|
||||
+ return GNOME_Evolution_Calendar_OtherError;
|
||||
+ }
|
||||
+
|
||||
+ if (g_slist_length (uid_list) == 1) {
|
||||
+ char *server_uid, *temp;
|
||||
+
|
||||
+ server_uid = (char *) uid_list->data;
|
||||
+ sanitize_component ((ECalBackendSync *) cbgw, comp, server_uid);
|
||||
+ g_free (server_uid);
|
||||
+
|
||||
+ /* if successful, update the cache */
|
||||
+ e_cal_backend_cache_put_component (priv->cache, comp);
|
||||
+
|
||||
+ temp = e_cal_component_get_as_string (comp);
|
||||
+ e_cal_backend_notify_object_created (E_CAL_BACKEND (cbgw), temp);
|
||||
+ g_free (temp);
|
||||
+ } else {
|
||||
+ EGwConnectionStatus stat;
|
||||
+ GSList *l;
|
||||
+ GList *list = NULL, *tmp;
|
||||
+ GPtrArray *uid_array = g_ptr_array_new ();
|
||||
+ guint i;
|
||||
+
|
||||
+ for (l = uid_list; l; l = g_slist_next (l)) {
|
||||
+ g_ptr_array_add (uid_array, l->data);
|
||||
+ }
|
||||
+
|
||||
+ /* convert uid_list to GPtrArray and get the items in a list */
|
||||
+ stat = e_gw_connection_get_items_from_ids (priv->cnc,
|
||||
+ priv->container_id,
|
||||
+ "attachments recipients message recipientStatus default peek",
|
||||
+ uid_array, &list);
|
||||
+
|
||||
+ if (stat != E_GW_CONNECTION_STATUS_OK || (list == NULL) || (g_list_length (list) == 0)) {
|
||||
+ g_ptr_array_free (uid_array, TRUE);
|
||||
+ return GNOME_Evolution_Calendar_OtherError;
|
||||
+ }
|
||||
+
|
||||
+ comp = g_object_ref ( (ECalComponent *) list->data );
|
||||
+ /* convert items into components and add them to the cache */
|
||||
+ for (i=0, tmp = list; tmp ; tmp = g_list_next (tmp), i++) {
|
||||
+ ECalComponent *e_cal_comp;
|
||||
+ EGwItem *item;
|
||||
+ char *temp;
|
||||
+
|
||||
+ item = (EGwItem *) tmp->data;
|
||||
+ e_cal_comp = e_gw_item_to_cal_component (item, cbgw);
|
||||
+ e_cal_component_commit_sequence (e_cal_comp);
|
||||
+ sanitize_component ((ECalBackendSync *) cbgw, e_cal_comp, g_ptr_array_index (uid_array, i));
|
||||
+ e_cal_backend_cache_put_component (priv->cache, e_cal_comp);
|
||||
+
|
||||
+ temp = e_cal_component_get_as_string (e_cal_comp);
|
||||
+ e_cal_backend_notify_object_created (E_CAL_BACKEND (cbgw), temp);
|
||||
+ g_free (temp);
|
||||
+
|
||||
+ g_object_unref (e_cal_comp);
|
||||
+ }
|
||||
+ g_ptr_array_free (uid_array, TRUE);
|
||||
+ }
|
||||
+
|
||||
+ return GNOME_Evolution_Calendar_Success;
|
||||
+}
|
||||
+
|
||||
static ECalBackendSyncStatus
|
||||
receive_object (ECalBackendGroupwise *cbgw, EDataCal *cal, icalcomponent *icalcomp)
|
||||
{
|
||||
@@ -2523,6 +2642,9 @@ receive_object (ECalBackendGroupwise *cb
|
||||
gboolean all_instances = FALSE;
|
||||
icalparameter_partstat pstatus;
|
||||
icalproperty *icalprop;
|
||||
+ ECalComponent *cache_comp;
|
||||
+ gboolean is_import = FALSE;
|
||||
+ const char *uid, *c_gw_id = NULL;
|
||||
|
||||
priv = cbgw->priv;
|
||||
|
||||
@@ -2548,15 +2670,36 @@ receive_object (ECalBackendGroupwise *cb
|
||||
comp = e_cal_component_new ();
|
||||
e_cal_component_set_icalcomponent (comp, icalcomponent_new_clone (icalcomp));
|
||||
method = icalcomponent_get_method (icalcomp);
|
||||
+ e_cal_component_get_uid (comp, &uid);
|
||||
+
|
||||
+ cache_comp = e_cal_backend_cache_get_component (priv->cache, uid, NULL);
|
||||
+ if (cache_comp)
|
||||
+ c_gw_id = e_cal_component_get_gw_id (cache_comp);
|
||||
|
||||
/* handle attachments */
|
||||
if (e_cal_component_has_attachments (comp))
|
||||
fetch_attachments (cbgw, comp);
|
||||
|
||||
- status = e_gw_connection_send_appointment (cbgw, priv->container_id, comp, method, all_instances, &modif_comp, &pstatus);
|
||||
+ status = e_gw_connection_send_appointment (cbgw, c_gw_id, comp, method, all_instances, &modif_comp, &pstatus, &is_import);
|
||||
|
||||
if (status == E_GW_CONNECTION_STATUS_INVALID_CONNECTION)
|
||||
- status = e_gw_connection_send_appointment (cbgw, priv->container_id, comp, method, all_instances, &modif_comp, &pstatus);
|
||||
+ status = e_gw_connection_send_appointment (cbgw, c_gw_id, comp, method, all_instances, &modif_comp, &pstatus, &is_import);
|
||||
+
|
||||
+ if (cache_comp) {
|
||||
+ g_object_unref (cache_comp);
|
||||
+ cache_comp = NULL;
|
||||
+ c_gw_id = NULL;
|
||||
+ }
|
||||
+
|
||||
+ if (is_import) {
|
||||
+ if (pstatus == ICAL_PARTSTAT_DECLINED)
|
||||
+ return GNOME_Evolution_Calendar_ObjectNotFound;
|
||||
+
|
||||
+ status = import_items (cbgw, comp);
|
||||
+ g_object_unref (comp);
|
||||
+
|
||||
+ return status;
|
||||
+ }
|
||||
|
||||
if (!modif_comp)
|
||||
modif_comp = g_object_ref (comp);
|
||||
Index: calendar/backends/groupwise/e-cal-backend-groupwise-utils.h
|
||||
===================================================================
|
||||
--- calendar/backends/groupwise/e-cal-backend-groupwise-utils.h.orig
|
||||
+++ calendar/backends/groupwise/e-cal-backend-groupwise-utils.h
|
||||
@@ -51,8 +51,10 @@ void e_gw_item_set_changes (EGw
|
||||
/*
|
||||
* Connection-related utility functions
|
||||
*/
|
||||
-EGwConnectionStatus e_gw_connection_create_appointment (EGwConnection *cnc, const char *container, ECalBackendGroupwise *cbgw, ECalComponent *comp, GSList **id_list);
|
||||
-EGwConnectionStatus e_gw_connection_send_appointment (ECalBackendGroupwise *cbgw, const char *container, ECalComponent *comp, icalproperty_method method, gboolean all_instances, ECalComponent **created_comp, icalparameter_partstat *pstatus);
|
||||
+EGwConnectionStatus e_gw_connection_create_appointment (EGwConnection *cnc, const char *container, ECalBackendGroupwise *cbgw, ECalComponent *comp, GSList **id_list, gboolean personal);
|
||||
+EGwConnectionStatus e_gw_connection_send_appointment (ECalBackendGroupwise *cbgw, const char *c_gw_id, ECalComponent *comp, icalproperty_method method, gboolean all_instances, ECalComponent **created_comp, icalparameter_partstat *pstatus, gboolean *import);
|
||||
+ EGwConnectionStatus e_gw_connection_get_freebusy_info (EGwConnection *cnc, GList *users, time_t start, time_t end, GList **freebusy, icaltimezone *default_zone);
|
||||
+ gboolean e_cal_backend_groupwise_store_settings (GwSettings *hold);
|
||||
EGwConnectionStatus e_gw_connection_get_freebusy_info (EGwConnection *cnc, GList *users, time_t start, time_t end, GList **freebusy, icaltimezone *default_zone);
|
||||
gboolean e_cal_backend_groupwise_store_settings (GwSettings *hold);
|
||||
EGwItem * e_gw_item_new_for_delegate_from_cal (ECalBackendGroupwise *cbgw, ECalComponent *comp);
|
||||
Index: calendar/backends/groupwise/e-cal-backend-groupwise.h
|
||||
===================================================================
|
||||
--- calendar/backends/groupwise/e-cal-backend-groupwise.h.orig
|
||||
+++ calendar/backends/groupwise/e-cal-backend-groupwise.h
|
||||
@@ -63,6 +63,7 @@ GHashTable* e_cal_backend_groupwise_get_
|
||||
icaltimezone* e_cal_backend_groupwise_get_default_zone (ECalBackendGroupwise *cbgw);
|
||||
void e_cal_backend_groupwise_notify_error_code (ECalBackendGroupwise *cbgw, EGwConnectionStatus status);
|
||||
const char * e_cal_backend_groupwise_get_local_attachments_store (ECalBackendGroupwise *cbgw);
|
||||
+const char * e_cal_backend_groupwise_get_container_id (ECalBackendGroupwise *cbgw);
|
||||
G_END_DECLS
|
||||
|
||||
#endif
|
@@ -1,23 +0,0 @@
|
||||
=== modified file 'servers/exchange/lib/e2k-autoconfig.c'
|
||||
--- servers/exchange/lib/e2k-autoconfig.c 2007-12-18 18:57:46 +0000
|
||||
+++ servers/exchange/lib/e2k-autoconfig.c 2007-12-18 18:58:09 +0000
|
||||
@@ -343,7 +343,18 @@
|
||||
e2k_autoconfig_set_creds (E2kAutoconfig *ac,
|
||||
E2kCreds *creds)
|
||||
{
|
||||
+ char *username, *password, *authmech;
|
||||
ac->creds = creds;
|
||||
+
|
||||
+ authmech = creds->http_auth_method (creds);
|
||||
+ creds->http_authenticate (creds, authmech, NULL, &username, &password);
|
||||
+
|
||||
+ e2k_autoconfig_set_username (ac, username);
|
||||
+ e2k_autoconfig_set_password (ac, password);
|
||||
+
|
||||
+ /* FIXME: Verify all code paths return strdup'd values */
|
||||
+ g_free (username);
|
||||
+ g_free (password);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@@ -1,83 +0,0 @@
|
||||
=== modified file 'calendar/libecal/e-cal-util.h'
|
||||
--- calendar/libecal/e-cal-util.h 2007-12-18 16:36:30 +0000
|
||||
+++ calendar/libecal/e-cal-util.h 2007-12-18 19:02:28 +0000
|
||||
@@ -127,6 +127,7 @@
|
||||
#define CAL_STATIC_CAPABILITY_NO_ORGANIZER "no-organizer"
|
||||
#define CAL_STATIC_CAPABILITY_DELEGATE_TO_MANY "delegate-to-many"
|
||||
#define CAL_STATIC_CAPABILITY_HAS_UNACCEPTED_MEETING "has-unaccepted-meeting"
|
||||
+#define CAL_STATIC_CAPABILITY_HAS_SMART_CARD "smart-card"
|
||||
|
||||
/* Recurrent events. Management for instances */
|
||||
icalcomponent *e_cal_util_construct_instance (icalcomponent *icalcomp,
|
||||
|
||||
=== modified file 'calendar/libecal/e-cal.c'
|
||||
--- calendar/libecal/e-cal.c 2007-12-18 18:57:46 +0000
|
||||
+++ calendar/libecal/e-cal.c 2007-12-18 19:02:28 +0000
|
||||
@@ -1631,12 +1631,15 @@
|
||||
ECalendarOp *our_op;
|
||||
char *username = NULL, *auth_type = NULL, *password = NULL;
|
||||
gboolean read_only = FALSE;
|
||||
+ gboolean no_auth;
|
||||
|
||||
e_return_error_if_fail (ecal != NULL, E_CALENDAR_STATUS_INVALID_ARG);
|
||||
e_return_error_if_fail (E_IS_CAL (ecal), E_CALENDAR_STATUS_INVALID_ARG);
|
||||
|
||||
priv = ecal->priv;
|
||||
-
|
||||
+
|
||||
+ no_auth = e_cal_get_static_capability (ecal, CAL_STATIC_CAPABILITY_HAS_SMART_CARD);
|
||||
+
|
||||
g_mutex_lock (ecal->priv->mutex);
|
||||
|
||||
if (!needs_auth && priv->load_state == E_CAL_LOAD_LOADED) {
|
||||
@@ -1655,7 +1658,7 @@
|
||||
g_mutex_unlock (priv->mutex);
|
||||
|
||||
/* see if the backend needs authentication */
|
||||
- if ( (priv->mode != CAL_MODE_LOCAL) && e_source_get_property (priv->source, "auth")) {
|
||||
+ if (!no_auth && (priv->mode != CAL_MODE_LOCAL) && e_source_get_property (priv->source, "auth")) {
|
||||
char *prompt, *key;
|
||||
char *parent_user;
|
||||
|
||||
@@ -2419,11 +2422,6 @@
|
||||
|
||||
g_mutex_lock (ecal->priv->mutex);
|
||||
|
||||
- if (ecal->priv->load_state != E_CAL_LOAD_LOADED) {
|
||||
- g_mutex_unlock (ecal->priv->mutex);
|
||||
- E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_URI_NOT_LOADED, error);
|
||||
- }
|
||||
-
|
||||
if (ecal->priv->current_op != NULL) {
|
||||
g_mutex_unlock (ecal->priv->mutex);
|
||||
E_CALENDAR_CHECK_STATUS (E_CALENDAR_STATUS_BUSY, error);
|
||||
|
||||
=== modified file 'servers/exchange/storage/exchange-account.c'
|
||||
--- servers/exchange/storage/exchange-account.c 2007-12-18 18:57:46 +0000
|
||||
+++ servers/exchange/storage/exchange-account.c 2007-12-18 19:02:28 +0000
|
||||
@@ -2500,3 +2500,11 @@
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
+
|
||||
+const char *
|
||||
+exchange_account_get_password_key (ExchangeAccount *acct)
|
||||
+{
|
||||
+ g_return_val_if_fail (EXCHANGE_IS_ACCOUNT (acct), NULL);
|
||||
+
|
||||
+ return acct->priv->password_key;
|
||||
+}
|
||||
|
||||
=== modified file 'servers/exchange/storage/exchange-account.h'
|
||||
--- servers/exchange/storage/exchange-account.h 2007-12-18 18:57:46 +0000
|
||||
+++ servers/exchange/storage/exchange-account.h 2007-12-18 19:02:28 +0000
|
||||
@@ -202,7 +202,7 @@
|
||||
GtkListStore *exchange_account_folder_size_get_model (ExchangeAccount *account);
|
||||
void exchange_account_scan_foreign_hierarchy (ExchangeAccount *account,
|
||||
const char *user_email);
|
||||
-
|
||||
+const char * exchange_account_get_password_key (ExchangeAccount *acct);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,3 +0,0 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:e8da8476881957afd1a76f3fadcc2eac30986080b0269a3aa04ea8ad83127987
|
||||
size 22164295
|
3
evolution-data-server-2.27.90.tar.bz2
Normal file
3
evolution-data-server-2.27.90.tar.bz2
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:d2dba65237515e57f8004433107528e3534b4a3ea73aaa8f00f9fba41a7c87f4
|
||||
size 14344213
|
36
evolution-data-server-krb5-as-needed.patch
Normal file
36
evolution-data-server-krb5-as-needed.patch
Normal file
@@ -0,0 +1,36 @@
|
||||
diff -ur evolution-data-server-2.27.90.orig/configure.ac evolution-data-server-2.27.90/configure.ac
|
||||
--- evolution-data-server-2.27.90.orig/configure.ac 2009-08-09 16:28:54.000000000 +0200
|
||||
+++ evolution-data-server-2.27.90/configure.ac 2009-08-10 22:59:25.000000000 +0200
|
||||
@@ -1168,27 +1168,27 @@
|
||||
|
||||
msg_krb5="no"
|
||||
if test "x${with_krb5}" != "xno"; then
|
||||
- LDFLAGS_save="$LDFLAGS"
|
||||
+ LIBS_save="$LIBS"
|
||||
|
||||
mitlibs="-lkrb5 -lk5crypto -lcom_err -lgssapi_krb5"
|
||||
heimlibs="-lkrb5 -lcrypto -lasn1 -lcom_err -lroken -lgssapi"
|
||||
sunlibs="-lkrb5 -lgss"
|
||||
AC_CACHE_CHECK([for Kerberos 5], [ac_cv_lib_kerberos5],
|
||||
[
|
||||
- LDFLAGS="$LDFLAGS -L$with_krb5_libs $mitlibs"
|
||||
+ LIBS="$LIBS -L$with_krb5_libs $mitlibs"
|
||||
AC_LINK_IFELSE([AC_LANG_CALL([], [krb5_init_context])],
|
||||
[ac_cv_lib_kerberos5="$mitlibs"],
|
||||
[
|
||||
- LDFLAGS="$LDFLAGS_save -L$with_krb5_libs $heimlibs"
|
||||
+ LIBS="$LIBS_save -L$with_krb5_libs $heimlibs"
|
||||
AC_LINK_IFELSE([AC_LANG_CALL([], [krb5_init_context])],
|
||||
[ac_cv_lib_kerberos5="$heimlibs"],
|
||||
[
|
||||
- LDFLAGS="$LDFLAGS_save -L$with_krb5_libs $sunlibs"
|
||||
+ LIBS="$LIBS_save -L$with_krb5_libs $sunlibs"
|
||||
AC_LINK_IFELSE([AC_LANG_CALL([], [krb5_init_context])],
|
||||
[ac_cv_lib_kerberos5="$sunlibs"], [ac_cv_lib_kerberos5="no"])
|
||||
])
|
||||
])
|
||||
- LDFLAGS="$LDFLAGS_save"
|
||||
+ LIBS="$LIBS_save"
|
||||
])
|
||||
if test "$ac_cv_lib_kerberos5" != "no"; then
|
||||
AC_DEFINE(HAVE_KRB5,1,[Define if you have Krb5])
|
@@ -1,3 +1,22 @@
|
||||
-------------------------------------------------------------------
|
||||
Mon Aug 10 22:37:35 CEST 2009 - dominique-obs@leuenberger.net
|
||||
|
||||
- Update to version 2.27.90:
|
||||
+ Calendar:
|
||||
- bgo#579965 - calendar file backend, update 'LAST-MODIFIED'
|
||||
when removing a recurring event instance
|
||||
- bgo#589985 - eds crash trying to create an event.
|
||||
+ Mail:
|
||||
- bgo#511283 - Some imags do not display in Evolution mail
|
||||
reader
|
||||
+ Miscellaneous:
|
||||
- bgo#590697 - Build regression detecting com_err.h
|
||||
- bgo#589388 - Build fixes / enhancements for EDS
|
||||
+ Other Fixes:
|
||||
- Enforce including only top-level GLib and GTK+ headers
|
||||
+ Updated translations.
|
||||
- Added evolution-data-server-krb5-as-needed.patch
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Fri Jul 31 20:42:51 CEST 2009 - vuntz@novell.com
|
||||
|
||||
|
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# spec file for package evolution-data-server (Version 2.27.5)
|
||||
# spec file for package evolution-data-server (Version 2.27.90)
|
||||
#
|
||||
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
|
||||
#
|
||||
@@ -58,7 +58,7 @@ Obsoletes: evolution-data-server-64bit
|
||||
Obsoletes: evolution-data-server-32bit
|
||||
%endif
|
||||
Summary: Evolution Data Server
|
||||
Version: 2.27.5
|
||||
Version: 2.27.90
|
||||
Release: 1
|
||||
Source0: ftp://ftp.gnome.org/pub/gnome/sources/evolution-data-server/2.25/%{name}-%{version}.tar.bz2
|
||||
# PATCH-NEEDS-REBASE evolution-data-server-1.11.5-cert-auth-complete.patch bgo253574 -- Fix has been submitted to bgo. (was PATCH-FIX-UPSTREAM)
|
||||
@@ -73,6 +73,8 @@ Patch7: dice-eds-changes.patch
|
||||
#Patch16: bnc-210959-eds-accept_ics.patch
|
||||
# PATCH-FEATURE-OPENSUSE evolution-data-server-shared-nss-db.patch hpj@novell.com -- Migrate to shared NSS database.
|
||||
Patch18: evolution-data-server-shared-nss-db.patch
|
||||
# PATCH-FIX-UPSTREAM evolution-data-server-krb5-as-needed.patch bgo#591377 dominique-obs@leuenberger.net -- fix detection of krb5 in configure when using Wl,-as-needed
|
||||
Patch19: evolution-data-server-krb5-as-needed.patch
|
||||
Url: http://www.gnome.org
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||
Requires: %{name}-lang = %{version}
|
||||
@@ -149,6 +151,7 @@ translation-update-upstream
|
||||
# NEEDS REBASE
|
||||
# %%patch16
|
||||
%patch18 -p1
|
||||
%patch19 -p1
|
||||
|
||||
%build
|
||||
intltoolize --force --copy
|
||||
|
Reference in New Issue
Block a user