[Evolution-hackers] evolution-kolab: hiding IMAP folders

2010-07-20 Thread Christian Hilberg
Hi all,

...still continuing...

Kolab makes use of RFC5464 - The IMAP METADATA Extension IMAP folder 
annotations to differentiate between the various folder types which are 
handled by Kolab. Remember, anything (Email and PIM data) is stored as Email 
messages with XML attachments in IMAP folders within the Kolab context. This 
means, we have IMAP folders for Email, Calendars, Contacts, TODOs, Tasks and 
the like.
  Now, when creating a Kolab account, all of these folder types are generated 
on the server. There is at least one folder for each type, which is the 
default folder initially.
  From within Evolution, *only* the IMAP folder which is annotated Email 
should be visible and all others should be hidden, as their respective 
contents will be managed by the backends, not Evolution. Otherwise, users will 
be able to meddle with PIM data folders, which might result in disastrous 
situations on the server side.
  Is it possible to define certain IMAP folders as hidden from within our 
plugin's EPlugin part? Or is it possible to hide certain IMAP folders (and 
their subfolders) in any other sensible way?

Many greetings,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48Fax: +49-271-771091-19
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] evolution-kolab: hiding IMAP folders

2010-07-20 Thread Christian Hilberg
On tuesday 20 July 2010 Christian Hilberg wrote:
 [...]
   From within Evolution, *only* the IMAP folder which is annotated Email
  ^^

the IMAP folders which are annotated, this is.

Best regards,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48Fax: +49-271-771091-19
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] evolution-kolab: hiding IMAP folders

2010-07-20 Thread chen
On Tue, 2010-07-20 at 12:20 +0200, Christian Hilberg wrote:
 Hi all,
 
 ...still continuing...
 
 Kolab makes use of RFC5464 - The IMAP METADATA Extension IMAP folder 
 annotations to differentiate between the various folder types which are 
 handled by Kolab. Remember, anything (Email and PIM data) is stored as Email 
 messages with XML attachments in IMAP folders within the Kolab context. This 
 means, we have IMAP folders for Email, Calendars, Contacts, TODOs, Tasks and 
 the like.
   Now, when creating a Kolab account, all of these folder types are generated 
 on the server. There is at least one folder for each type, which is the 
 default folder initially.
   From within Evolution, *only* the IMAP folder which is annotated Email 
 should be visible and all others should be hidden, as their respective 
 contents will be managed by the backends, not Evolution. Otherwise, users 
 will 
 be able to meddle with PIM data folders, which might result in disastrous 
 situations on the server side.
   Is it possible to define certain IMAP folders as hidden from within our 
 plugin's EPlugin part? Or is it possible to hide certain IMAP folders (and 
 their subfolders) in any other sensible way?
This cannot be done in a fool-proof way for IMAP as it does not provide
information on the type of the folder. This can be done with an
assumption that calendar folder will be named as 'calendar' or contact
folders as 'contacts'.

The other thought I get is, the contacts+calendar folder names can be
collected as an option in account-setup and set as part of camel url
(prolly through a kolab plugin, hiding it from the user. you can check
how groupwise account set-up is implemented for an example) say
hide_folders=list of folders with a separator. If the parameter is
set, the folders can be hidden while fetching folder_info through
camel_store_get_folder_info (in imapx backend), which gives the folder
tree.

We could add another flag in CamelStore to over-ride the above option to
fetch all folders while fetching the folders from
contacts(EBookBackend)/calendar(ECalBackend) backends.

I can help you with making these changes in imapx backend/CamelStore and
inform you the changes which you would need to make in your
account-setup plugin. Sounds ok?

- Chenthill.
 
 Many greetings,
 
   Christian
 
 ___
 evolution-hackers mailing list
 evolution-hackers@gnome.org
 To change your list options or unsubscribe, visit ...
 http://mail.gnome.org/mailman/listinfo/evolution-hackers



___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] evolution-kolab: hiding IMAP folders

2010-07-20 Thread chen
On Tue, 2010-07-20 at 12:41 +0200, Milan Crha wrote:
 On Tue, 2010-07-20 at 12:20 +0200, Christian Hilberg wrote:
Is it possible to define certain IMAP folders as hidden from within our 
  plugin's EPlugin part? Or is it possible to hide certain IMAP folders (and 
  their subfolders) in any other sensible way?
 
   Hi,
 you said you want to use imapx internally, is it right? And even if
 only the imap provider itself, then I would suggest to subclass it
 (your base imap provider) in your evolution-kolab package and manage
 this within CamelStore::get_folder_info, by calling parent class'
 get_folder_info and then recreate folder information based on your needs
 (once with email folders only, once with calendar folders only, and so
 on).
Just noticed the reply. I dont think it requires sub-classing as it
seems to be applying for other collaborative backends such as groupwise
where we would need to hide some folders iirc it was tasks/contacts
(sorry forgot the exact folders), but remember discussing with Akhil.

- Chenthill.
   Hope that helps,
   Milan
 
 ___
 evolution-hackers mailing list
 evolution-hackers@gnome.org
 To change your list options or unsubscribe, visit ...
 http://mail.gnome.org/mailman/listinfo/evolution-hackers



___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] evolution-kolab: hiding IMAP folders

2010-07-20 Thread Christian Hilberg
Hi there,

thanks Milan for your reply.

On Tuesday 20 Juli 2010 Milan Crha wrote:
 On Tue, 2010-07-20 at 12:20 +0200, Christian Hilberg wrote:
Is it possible to define certain IMAP folders as hidden from within
our plugin's EPlugin part? Or is it possible to hide certain IMAP 
folders (and their subfolders) in any other sensible way?

   Hi,
 you said you want to use imapx internally, is it right? And even if

IMAPX-only, yes. That's the master plan. :-)

 only the imap provider itself, then I would suggest to subclass it
 (your base imap provider) in your evolution-kolab package and manage
 this within CamelStore::get_folder_info, by calling parent class'
 get_folder_info and then recreate folder information based on your needs
 (once with email folders only, once with calendar folders only, and so
 on).

Hm. Maybe I'm still missing some parts here on how Evolution internally works.

  Subclassing the Camel Provider in our backends and overloading 
get_folder_info() will work for the backend part, i.e. PIM data wich is 
accessed and managed from inside E-D-S. So far, no problem.
  But there is standard Email to handle as well, and if I understood 
correctly, Email handling is (presently) done inside Evolution, not E-D-S. 

Now, if I create a Kolab account, I will see not only the Email IMAP folders 
in Evolution (frontend, Email view), but *also* the parts of the IMAP tree for 
the Kolab server which hold PIM data. These are simply IMAP folders, just that 
they bear folder annotations. Other than that, the folders which hold PIM data 
(as single emails with XML attachments) are no different from true Email 
folders. This means, when I configure Evolution (2.30 let's say, without any 
Kolab plugin) as to access a Kolab server, nothing hinders Evolution to 
display the whole IMAP tree and the folders which hold PIM data just become 
visible as standard Email folders.
  This I cannot intercept from my backend code (or can I?), since Evolution 
just accesses the Kolab IMAP server without knowing that certain IMAP folders 
do not hold standard Emails which must not be accessible to the user. What's 
more, the IMAP folder layout in Kolab may change over time, as I create new 
address books, nesting things etc, so the folder tree is not static. 
Therefore, I cannot just pre-configure which folders to show and which ones to 
hide, I'll have to do this dynamically, solely relying on the folder 
annotations telling me which kind of IMAP folder I'm facing.
  For this to work, I would have to subclass the Camel Provider within my 
EPlugin - is that possible? So far, I have only seen EPlugins using existing 
Evolution infrastructure, but not changing the Camel Provider inside Evo...

   Hope that helps,

Partly, yes. :-) Please feel free to correct me on any misconception I have 
regarding the internals of Evo/E-D-S, I'll be grateful for that. Also, if I 
need to be clearer on any Kolab issue, please let me know as well.

   Milan

Best regards,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48Fax: +49-271-771091-19
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] evolution-kolab: hiding IMAP folders

2010-07-20 Thread Christian Hilberg
Hi there,

On Tuesday 20 July 2010 chen wrote:
 On Tue, 2010-07-20 at 12:20 +0200, Christian Hilberg wrote:
 [...] 
Is it possible to define certain IMAP folders as hidden from within
our plugin's EPlugin part? Or is it possible to hide certain IMAP 
folders (and their subfolders) in any other sensible way?
 
 This cannot be done in a fool-proof way for IMAP as it does not provide
 information on the type of the folder. This can be done with an
 assumption that calendar folder will be named as 'calendar' or contact
 folders as 'contacts'.

Not entirely correct, though. RFC 5464 - The IMAP METADATA Extension / imap-
annotatemore specifies an extension to the IMAP protocol which does exactly 
that. The Kolab IMAP daemon uses this extension to differentiate between the 
folder types and Kontact does implement it - works quite well. Now, with our 
plugin, we strive to be en par with Kontact's features (or at least implement 
as much as possible) - let's see! :-)

 The other thought I get is, the contacts+calendar folder names can be
 collected as an option in account-setup and set as part of camel url
 (prolly through a kolab plugin, hiding it from the user. you can check
 how groupwise account set-up is implemented for an example) say
 hide_folders=list of folders with a separator. If the parameter is
 set, the folders can be hidden while fetching folder_info through
 camel_store_get_folder_info (in imapx backend), which gives the folder
 tree.

Good idea. We'll have to check how to handle dynamic changes in the IMAP 
folder structure, still. Folders with annotations may come and go, nested or 
not - this is not static, and neither is the overall layout (other than a few 
static constraints), so we'll need to see how we can cope with that...

 We could add another flag in CamelStore to over-ride the above option to
 fetch all folders while fetching the folders from
 contacts(EBookBackend)/calendar(ECalBackend) backends.
 I can help you with making these changes in imapx backend/CamelStore and
 inform you the changes which you would need to make in your
 account-setup plugin. Sounds ok?

We'll thankfully use whatever help we can get here. We also see clearly which 
problems arise in these areas because of our decision to settle on 2.30 ... 
this is the version we would need to change (branch is fine). It will be very 
much helpful to know which parts will be affected and how we should design our 
changes in order not to break anything.

Thanks again for your help and for your awesome patience with us (this goes to 
the entire list).

Best regards,

Christian

-- 
kernel concepts GbRTel: +49-271-771091-14
Sieghuetter Hauptweg 48Fax: +49-271-771091-19
D-57072 Siegen
http://www.kernelconcepts.de/


signature.asc
Description: This is a digitally signed message part.
___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers


Re: [Evolution-hackers] evolution-kolab: hiding IMAP folders

2010-07-20 Thread Milan Crha
On Tue, 2010-07-20 at 13:18 +0200, Christian Hilberg wrote:
 Hm. Maybe I'm still missing some parts here on how Evolution
 internally works.
 
   Subclassing the Camel Provider in our backends and overloading 
 get_folder_info() will work for the backend part, i.e. PIM data wich
 is accessed and managed from inside E-D-S. So far, no problem.
   But there is standard Email to handle as well, and if I understood 
 correctly, Email handling is (presently) done inside Evolution, not
 E-D-S.

Hi,
others will correct me, but from evolution-mapi point of view (which is,
with evolution-exchange, closest to that what you are trying to do):
- create a Camel provider, which, when placed to the right place, will
be shown in new account creation as an account type (see
camel-mapi-provider.c, there's everything needed for having new mail
provider available in Evolution). Evolution-mapi is extending basic
camel objects, like CamelStore, but as you want to use IMAPX, then less
work for you, derive from it. Note that this Camel part has nothing to
do with EPlugin, the most you define an EPlugin to add menu options on
your folders, like Folder Size option for MAPI folders, but other than
that the EPlugin part is optional for mailer part.
- for calendar and addressbook support create your own
EBookBackend/ECalBackend descendants (with defined all the virtual
methods there). You need an EPlugin to have them accessible from UI, to
be able to setup specific things on it. See
exchange-mapi-account-setup.c:exchange_mapi_create_addressbook and
exchange_mapi_create_calendar as examples. Note these are mentioned in
org-gnome-exchange-mapi.eplug.xml.
- evolution-mapi's EPlugin also listens for changes on EAccountList
(which is a list of configured mail accounts) and adds/removes ESource-s
for addressbooks/calendars based on enabled/disabled MAPI accounts,
keeping these three in sync, so the only thing user needs to setup is an
email account, and the addressbook/calendar are added automatically.

With respect of folder structure changes, the first sync will update
internal caches as necessary, namely camel-store-summary, allowing you
to hold the necessary information about each folder, and also adding the
type annotation on it too. How or when fetch that annotation is a
question for you.
Bye,
Milan

___
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers