[evolution-exchange] Fix the permissions dialog for other components.



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]