[Evolution-hackers] Evolution calendar backend for Planner tasks
Alvaro
acs@barrapunto.com
Sun, 15 Aug 2004 16:57:52 +0200
--=-5Sw3+Rsag9Z5cp3OwvPq
Content-Type: text/plain
Content-Transfer-Encoding: 7bit
Hi guys!
I have finished before going holidays a first probe for the Planner
calendar backend for Evolution. Advice by rodrigo and with the last
experience in evolution resources import for planner and the OGo
connector, it hasn't been a very hard target.
You can see the integration screenshot in:
http://sinetgy.org/~acs/planner-evolution.png
and the code is attach to this email. You need to apply the patch to the
current evolution-data-server, and also, extract the "tar.gz" file in
the e-d-s sources. In the "tar.gz" is located the new files:
calendar/backends/planner: the real backend
servers/planner: a little program to add the souces lines in GConf so
Evolution can find the new backend data.
Actually, the planner file the backend uses is hard coded and it is
called "/tmp/test.planner". You need this file also in order the backend
can show you planner tasks.
I think it isn't worth the time to spend testing the new backend, but I
want to show it to the world before going out for 2 weeks in holidays.
Some details about how I have done it:
1. Take a current backend as reference: http
2. I have removed all the soup code, and the cache code and added lots
of new code. Maybe the right thing to do is to have a skeleton to be
filled when you want to start a new backend.
3. I have added to the backend the new libraries I need, libplanner, and
add it to the building environment for e-d-s.
4. The backend is very easy in concept: you need to create something to
translate what you have (MrpTask for Planner) to ECalComponent, and
store in memory the relation between this MprTask and the ECalComponent.
5. When a client ask you to open the Calendar, I open a new Planner
project and load all the task for this project, converting them to
ECalComponent and saving the relation in a GHashTable with uid as the
key.
6. I have added to srv/server.c and
srv/GNOME_Evolution_DataServerLDAP.server.in.in (I use LDAP) the entries
so e-d-s server knows about a new protocol called "planner".
7. To create the sources in GConf, I have followed the create-account.c
in server/groupwise/create-account.c and I have created
server/planner/create-planner.source.c
When I return from holidays and be in production state another time I
have to:
- Find where the backend will live: e-d-s CVS or planner CVS
- Solve some bugs when playing in real world with the backend
- Complete the MrpTask to ECalComponent conversor
- Find the way to ask the user for the details for the planner source:
which file or database project she want to use for the backend.
- Test, test and more test :)
- Other things ....
It is so funny to hack in this integrarion ... :) Thanks rodrigo for
your great support in the evolution project.
The "diff" is against the e-d-s as it is right now (16:50 GMT+2
15/08/2004).
Cheers
-- Alvaro
--
Alvaro <acs@barrapunto.com>
Barrapunto
--=-5Sw3+Rsag9Z5cp3OwvPq
Content-Disposition: attachment; filename=eds-planner-backend.tgz
Content-Type: application/x-compressed-tar; name=eds-planner-backend.tgz
Content-Transfer-Encoding: base64
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
--=-5Sw3+Rsag9Z5cp3OwvPq--