[evolution-exchange] Fix the permissions dialog for other components.
- From: Bharath Acharya <abharath src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-exchange] Fix the permissions dialog for other components.
- Date: Fri, 19 Feb 2010 08:51:21 +0000 (UTC)
commit 470acd5227e14462df6a43054fb7ea100f79deb2
Author: Bharath Acharya <abharath novell com>
Date: Fri Feb 19 14:23:53 2010 +0530
Fix the permissions dialog for other components.
eplugin/exchange-folder-permission.c | 8 ++++----
server/storage/exchange-account.c | 29 +++++++++++++++++++++++++++++
server/storage/exchange-account.h | 2 ++
3 files changed, 35 insertions(+), 4 deletions(-)
---
diff --git a/eplugin/exchange-folder-permission.c b/eplugin/exchange-folder-permission.c
index 24abef3..b983c2d 100644
--- a/eplugin/exchange-folder-permission.c
+++ b/eplugin/exchange-folder-permission.c
@@ -82,17 +82,17 @@ call_folder_permissions (const gchar *uri)
{
ExchangeAccount *account = NULL;
EFolder *folder = NULL;
- const gchar *path;
+ const gchar *sanitized_path;
g_return_if_fail (uri != NULL);
account = exchange_operations_get_exchange_account ();
if (!account)
return;
+
+ sanitized_path = exchange_account_get_sanitized_path (uri);
- path = uri + strlen ("exchange://") + strlen (account->account_filename);
-
- folder = exchange_account_get_folder (account, path);
+ folder = exchange_account_get_folder (account, sanitized_path);
if (folder)
exchange_permissions_dialog_new (account, folder, NULL);
}
diff --git a/server/storage/exchange-account.c b/server/storage/exchange-account.c
index a0c26da..5b4139d 100644
--- a/server/storage/exchange-account.c
+++ b/server/storage/exchange-account.c
@@ -1906,6 +1906,35 @@ exchange_account_get_hierarchy_by_email (ExchangeAccount *account, const gchar *
return hier;
}
+static gchar *
+sanitize_path (const gchar *path)
+{
+ gchar **comps;
+ gchar *new_path = NULL;
+
+ if (!path)
+ return g_strdup(""); /* ??? or NULL? */
+
+ comps = g_strsplit (path, ";", 2);
+ if (comps[1])
+ new_path = g_strdup_printf ("%s%s", comps[0], comps[1]);
+ else if (comps[0])
+ new_path = g_strdup (comps[0]);
+
+ g_strfreev (comps);
+ return new_path;
+}
+
+const gchar *
+exchange_account_get_sanitized_path (const gchar *uri)
+{
+ gchar *sanitized_path;
+
+ sanitized_path = sanitize_path (e2k_uri_path (uri));
+ e2k_uri_decode (sanitized_path);
+ return sanitized_path;
+}
+
/**
* exchange_account_get_folder:
* @account: an #ExchangeAccount
diff --git a/server/storage/exchange-account.h b/server/storage/exchange-account.h
index 364d6fa..8deee24 100644
--- a/server/storage/exchange-account.h
+++ b/server/storage/exchange-account.h
@@ -83,6 +83,8 @@ gchar *exchange_account_get_account_uri_param (ExchangeAccount
const gchar *exchange_account_get_standard_uri (ExchangeAccount *acct,
const gchar *item);
+const gchar *exchange_account_get_sanitized_path (const gchar *uri);
+
gchar *exchange_account_get_standard_uri_for (ExchangeAccount *acct,
const gchar *home_uri,
const gchar *std_uri_prop);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]