/*! \page pageicalsrvfaq IcalSrv FAQ - some questions and answers

@author JVL

Mostly updated to:
@version 0.9.37-a1 (icalsrv)
@date 20060427

\section secicalsrvfaqintro FAQ Intro
Hi, this is the first, very rudimentary version of a Frequently Asked
Questions list about IcalSrv, the Egroupware's Icalendar over http
service.

I will record here some basic questions seen in the egw forum or
elsewhere. As both IcalSRV and its features are still in a growing phase, I
will try to record with each question the versions of IcalSrv for
which the situation applies. This is in the 
<code>SINCE: version .... : ...</code>
lines below a question and answer.

As some questions are most often posed by basic users, while others
are rather dedicated towared more technical users and developers, I
try to put an UB (for User Basic) or UT (for User Technical) or DEV (for
Developer) as label to the questions.


\section secicalsrvqa_access UB: How do I access a calendar via Icalsrv?

As soon as you have Icalsrv running and setup properly, there maybe
many icalendars available to be accessed from a client like Sunbird.
As explained in the overview in @ref icalsrvsecabout you can
see what virtual calendars are provided by IcalSrv in your Egroupware
server using a special url. You should note that he virtual calendars come in two variants:
- system virtual calendars that are independent of a user for their definition.
  You get a listing of these via the url: 
  @url http://myserver.com/egroupware/icalsrv.php/list.html

- personal virtual calendars that hold a definition for calendars based on
  user settings.   You get a listing of these for a certain userX via the url: 
  @url http://myserver.com/egroupware/icalsrv.php/userX/list.html


After you have found in these listings a certain calendar that you
want to use in your client. Copy its url (e.g. using the <em> copy
links </em> actions of you browser when right mouse clicking on the
hyperlink in the listing. And put this url in de appropiate subscribe
field in your client. If you also want
to publish this calendar later again to Egw you may need, dependant on
your client, to put this url also in a <em>publish</em> field of the
client setup (see the @ref pageicalsrvclients for more specific
client details on this).

Now you should be able to use the client to download and publish the
(virtual) calendar.


\section icalsrvqa_personalvc UB: I cannot see MrX his personal calendar?

To see somebodies personal calendar you have to access it using the
correct url (see @ref secicalsrvqa_access). Next thing is that need
to have sufficient rights to read it. This means that
the calendar owner, lets say MrX, must have  granted you (i.e. the user that accesses
Egw icalsrv via e.g. Sunbird using http basic
authentication), access to his calendar (if the requested virtual
calendar refers to his Egw calendar events) or his infolog (if the
requested virtual calendar refers to MrX his infolog tasks).
This granting of access is something MrX has to do using the "grants"
menu in his calendar and/or infolog pages. It can be played by either
setting these ACL grants for you individually
of by setting them for a specific group that you are member of. (see
also @ref icalsrvqa_bossandsecretary).


\section icalsrvqa_bossandsecretary UB: Can I have the secretaries manage the bosses calendar?

An often found situation is where the personal calendar/infolog of a
boss (MrBoss) should be managed (read and/or updated) by a secretary
(MrSecretary) 
that should though not be in the possession of MrBoss his Egw password.
Can this be done via IcalSrv? Yes, it can, just as with browser based
usage of Egw, using the correct ACL rights settings by the MrBoss. 

The steps are as follows. Lets assume we have a group of secretaries
<code>MrSec1</code> and <code>MissSec2</code>.
 - first create (as Admin) a secretaries group, lets say:
   <code>topsecretaries</code>
 - As Admin add <code>MrSec1</code> and <code>MissSec2</code> to the group	
	<code>topsecretaries</code>	 
 - Now, as MrBoss go to the Egw Calendar and set read (and if desired
   write, etc...) grants allowed to the group <code>topsecretaries</code>	 
 - If you want the secretaries also to maintain the infolog, as MrBoss
   go to the Egw Infolog and set read (and if desired 
   write, etc...) grants allowed to the group
   <code>topsecretaries</code> for this application too.
 - Now a secretary like MrSec1 that accesses (using his own credentials)
   via Sunbird the virtual calendar http://.....icalsrv.php/MrBoss/events.ics
   should be able to see (and possible change) MrBoss events
   To view or manipulate the  tasks of MrBoss he might use the virtual calendar  .../tasks.ics or
   the combined calendar  ..../defaults.ics

@since v0.9.36-ng working



\section icalsrvqa_deletions UB: Help, I cannot delete events or todos via IcalSrv

Yes, you found a disappointing feature..

Deletion of a complete remote calendar (on Egw) via IcalSrv is not
supported. For a discussion on why this is not , and should not be,  implemented
 see the webcal protocol discussion in @ref pagewebcaldiscussion

Individual calendar events or todos cannot be deleted either by just
deleting them on the client and then hoping that this propagates to
Egroupware at the moment of publishing. Though this is something that
you certainly would like to have as a feature, there are various
reasons for why this is not implemented. Most of them have to do with
the fact that Egroupware is a real multi-user groupware server and not
just a storage for icalendars. When we will support the CalDAV or
GroupDAV protocol, at some moment in time, you will have this
functionality though.

But nevertheless, for the time being, there is a smart
<em>hack</em>. That is: you can though delete items by simply renaming
them (via the summary/title field) to <code>X-DELETE</code>.  I you do
so, they will get deleted in Egw on publishing. When you later
download ("reload"/"refresh") the remote calendar in your client you
should notice that the event is gone..


\section icalsrvqa_publishfilter UB: Will my virtual calendar period settings prevent publishing events outside that period?

Short answer: at the moment: NO! Currently the filtering used in
virtual calendars works only on export from Egw to the client. On
upload (publishing) from the client to Egw, all events (and todos) are
imported into Egw, wether or not they fall in the virtual calendar
period. The ACL checking, to see if the event is allowed to be updated
is done though.
<PRE>
SINCE: version 0.9.33-ng-b1 : ...
</PRE>



\section icalsrvqa_nonegwparticipants UB: Help, published event participants get lost and strange text appears in the event desciption.

Icalsrv can, on import from a client, only recognize valid eGroupware participants if
they have an email address associated with them (at the time of export and now).
For other detected participants of an event, on import a short note is written in
the event its description, telling that there are some <em>Non EGW participants</em> and
then listing them.

\section icalsrvqa_commaesc  UB: Help, I put a comma in my field text and now its half missing!

Using a COMMA or COLON or SEMICOLON in icalfields like SUMMARY, DESCRIPTION or LOCATION may
easily lead to wrong results when importing and exporting. Although the RFC says that in this
case the program should double-quote the values of the fields, it appears that various
clients react differently when confronted with these.

In versions before v0.9.37 of egwical, use of commas would lead to loss of a part of the field.
Since v0.9.37 there is modest escaping built in for commas appearing in one of the fields
mentioned above. This is done by prepending backslashes (as rfc 2426 sec2.4.2 suggests).
At least in recent versions of Sunbird and Korganizer this appears to work reasonable.


\section icalsrvqa_install UT: How do I install IcalSrv?
This mostly comprises two things: getting the stuff and actually
installing it.

\subsection icalsrv_getting UT: How to get IcalSrv

You have a couple of possibilities, especially if you want the latest
version.
For  up-todate info see the icalsrc wiki page on 
@url http://www.egroupware.org/egroupware/wiki/index.php?page=IcalSrv

Since egw1.2Rc8 you find icalsrv in the standard (base or contrib)
egroupware package and via the egroupware CVS. Occasionally I produce
a tarball that I provide via my homepage (see the wiki page above for
more info)
 
A bit on the current situation:

<code>SINCE version 0.9.22/egw-1.2rc8 </code>

The IcalSrv is an application that is in the 1.2rc8 contrib package,
in a separate rpm file and in CVS (HEAD and branch_1_2_0).
So if you install Egw and the contrib package You have it!

If you use rpm packages you need to install the basic egw rpm and further 
icalsrv.rpm and the --backend piece-- egwical.rpm package, 

@note IcalSrv needs a "backend" piece called "egwical" that is not yet standard in the
phpgwapi, so you have to have this installed too, in an appropiate
version. This is either from the contrib or via an rpm package.
 
<code>SINCE version 0.9.33/egw-1.2 </code>

I dont know yet where we will have the IcalSrv and Egwical packages in
the final 1.2 release....


\subsection icalsrv_installing UT: How to Install IcalSrv from the sources?

There should be some info in the @ref secinstall in the Icalsrv mainpage.


\section icalsrvqa_notworktips Help: UT: I installed  IcalSrv and it doesnot work? Some Tips.

Yes, many things can go wrong ;-) Here some general tips to check:

- Did you install both IcalSrv and Egwical in their correct versions?
  Icalsrv is there when you have a folder .../icalsrv And egwical is
  there when you have a folder .../egwical . The version can be found
  in some version strings in the source code or via the api docs or (for
  icalsrv via the manage applications menu in the administrator
  configuration page.
  . 
  <code>SINCE version 0.9.22/egw-1.2rc8 </code>

- Did you enable icalsrv application via the <em>manage applications</em> page in
  egw setup?

- Did you enable IcalSrv for a specific user?
  .
  (Not yet possible/needed <code>SINCE version 0.9.22/egw-1.2rc8 </code>)


\section icalsrvqa_notworkdebug UT,DEV: Help: I installed  IcalSrv it doesnot work? How to debug?.

IcalSrv is a sevice  that does not generate webpages, so to see any error or debug
information, there are just three other places to look at:

-# The HTTP error message. <br>
  If you have a really problematic error, IcalSrv will answer your http
  request with a 403 error and --hopefully-- a short message. In some
  clients (like Korganize) this is reported back via a popup with a
  silly message that "exporting went wrong or access denied" or so, instead of displaying
  this message it got together with the 403 error. Note: Sunbird does
  display the message. Unfortunately at the moment this will be mostly
  "VEVENTS import ERROR" or so..
-# The httpd errorlog file/stream. <br>
  Most problematic errors are reported
  to this file of the egw server. So this is indeed the best source for
  debug info. But to read it, you need access to the
  server and to this log file. So egw administrators are likely
  the only ones for who this can be of help.
-# The ical.log files and ical.exportxxxx plus ical.importxxxx <br>
  files.
  If you did install the icalsrv.php file with the variable
  $logdir set to folder where the httpd is allowed to write, you will
  get a detailed log in file ical.log of all uploads and downloads via
  IcalSrv furhtermore for each of these the associated iCalendar data
  will be logged in ical.exportXXXXXX files with XXXX the utime of the
  action. These files reside on the egw server, mostly in /tmp. So again
  to read them you will need access to this server directory.
  Of course this feature needs to be disabled in a production setting:
  the file growth and the security issues of it demand it.


\section icalsrvqa_features  UT: What features are implemented and what is missing in IcalSrv?

We used to have a list of implemented features, bugs and todos. 
Sorry but at the moment this list is missing.. Via the mainpage of
this documentation you should be able to find (via related pages) a
page with the currently open todos and bugs.

For the current status of iCalendar fields that are imported/exported
from and to Egroupware via IcalSRV you should consult the package EgwIcal
documentation, as this is the working engine that does all the conversions.

Notably missing features at moment are though;
- no import or export of URL fields in events or todos (will come at
  some time)
- no import or export of ATTACHMENTS in events or todos (funding might help
  to implement it)
- recurring tasks for todos (egw does not support this yet)
- VTIMEZONE components are not supported (neither references to them) so
  any timesettings defined with them  are interpreted as local time (see
  further the timezone handling page in the egwical documentation).
  (here too: funding might help to implement it)

\section icalsrvqa_https UT: Does IcalSrv work with https?

Yes, since version 0.9.36-ng-a4 it is checked to work with both http and https (checked on
apache2 under linux). In earlier versions it worked to but the content of .../list.html
didnot adopt the links in the file to the appropiate connection. After this version it
was fixed.


\section icalsrvqa_iocompat UT: Is the icalsrv output/input the same as the ical file import/export via the sidebar menu in the calendar app?

At the moment (egw1.2.1) not, unless you replaced the files
calendar/class.boical.inc.php and infolog/class.vcalinfolog.inc.php by
the compat classes files egwical/class.boical.inc.compat.php
and resp. egwical/class.vcalinfolog.inc.compat.php 
See the egwical documentation for more on this.

Currently these classes provide more or less the same functionality,
and in future they might merge, but as the syncml package that is
currently being actively developed, is using the first two too, there
we may have, at the moment, a slight difference in icalendar handling between IcalSrv
and the manual import or export of a icalendar file via the calendar menu.

\section icalsrvqa_php4compat UT: Is IcalSRV still working with php4? What problems to expect?

Unfortunately I did no thorough checking anymore, to test the icalsrv and egwical compliancy
to php4 for the NG versions (say >v0.9.30). We had reports from people that it still works
mostly with php4, after a few offending constructs are removed to get rid of a lot of warnings.
These constructs are mainly:
 - the  <code> &$arg = null </code> function argument declarations. Mostly the ampersand
   can be removed, as this only means a slight decrease in efficiency. Be warned: there are
   a couple of places in the code where this should not be done.
 - and <code> foreach </code> loops that are confronted with empty arrays. Php4 doesnot like this
   and will produce warnings.

As some important features of Egw in the current release require php5 anyway, I wont spend
much time on making it fully php4 compliant. That is, unless specifically requested ;-)


*/