head	1.20;
access;
symbols
	camas_1_2_21:1.20
	camas_1_2_20:1.20
	camas_1_2_19:1.20
	camas_1_2_18:1.20
	camas_1_2_17:1.20
	camas_1_2:1.20.0.2
	camas_1_2_16:1.20
	camas_1_2_15:1.20
	camas_1_2_13:1.20
	camas_1_2_:1.20
	camas_1_2_11:1.19
	camas_1_2_10:1.19
	camas_1_2_9:1.19
	camas_1_2_8:1.19
	camas:1.1.1
	camas_1_1_7:1.17
	camas_1_1_6:1.17
	camas_1_1_5:1.17
	camas_1_1_4:1.17;
locks; strict;
comment	@# @;


1.20
date	2003.05.17.14.41.43;	author vida;	state Exp;
branches;
next	1.19;

1.19
date	2003.03.19.11.59.38;	author kiwi;	state Exp;
branches;
next	1.18;

1.18
date	2003.03.18.09.29.58;	author vida;	state dead;
branches;
next	1.17;

1.17
date	2001.11.09.16.05.42;	author kiwi;	state Exp;
branches
	1.17.2.1;
next	1.16;

1.16
date	2001.10.26.17.23.53;	author oliv3;	state Exp;
branches;
next	1.15;

1.15
date	2001.10.11.15.46.06;	author oliv3;	state Exp;
branches;
next	1.14;

1.14
date	2001.09.29.15.15.32;	author kiwi;	state Exp;
branches;
next	1.13;

1.13
date	2001.09.24.19.28.51;	author kiwi;	state Exp;
branches;
next	1.12;

1.12
date	2001.09.19.13.07.03;	author oliv3;	state Exp;
branches;
next	1.11;

1.11
date	2001.09.18.01.30.31;	author kiwi;	state Exp;
branches;
next	1.10;

1.10
date	2001.09.16.21.10.40;	author gourdelier;	state Exp;
branches;
next	1.9;

1.9
date	2001.09.13.01.12.33;	author kiwi;	state Exp;
branches;
next	1.8;

1.8
date	2001.09.12.11.27.26;	author oliv3;	state Exp;
branches;
next	1.7;

1.7
date	2001.09.06.21.00.18;	author kiwi;	state Exp;
branches;
next	1.6;

1.6
date	2001.09.05.22.43.08;	author oliv3;	state Exp;
branches;
next	1.5;

1.5
date	2001.09.05.22.38.25;	author oliv3;	state Exp;
branches;
next	1.4;

1.4
date	2001.09.04.22.07.24;	author kiwi;	state Exp;
branches;
next	1.3;

1.3
date	2001.08.31.11.14.28;	author oliv3;	state Exp;
branches;
next	1.2;

1.2
date	2001.08.30.19.08.17;	author kiwi;	state Exp;
branches;
next	1.1;

1.1
date	2001.08.30.18.54.12;	author kiwi;	state Exp;
branches
	1.1.1.1;
next	;

1.1.1.1
date	2003.03.18.10.01.44;	author vida;	state Exp;
branches;
next	;

1.17.2.1
date	2003.01.13.14.08.14;	author bertrand;	state Exp;
branches;
next	;


desc
@@


1.20
log
@Updating TODO list.
@
text
@CAMAS 1.1 TODO List and Q&A
---------------------------

TODO:

CAMAS:
	. Choose a standard way in output/input of all functions that
          returns / handle strings. 
           Either strings are UTF8 encoded,
           Either strings are Unicoded,
           Either strings are encoded in national caracter of client.
          Anyway, I really think that we must choose either utf8 or
          unicode since pike 7.x have string_to_utf8, utf8_to_string,
          string_to_unicode and unicode_to_string functions.
	. would be cool if we could remove the \Seen flags from mails :)
	. from redax: on the fly uuencoded attachments decoding

	. oliv3 TODO remove this defvar "inboxes" which deprecated for a
	    long time now

        . HIGH PRIORITY : clean the code :
           . stop add nom portables objects in id->session_variables (eg
              object that cannot MIME.base64.encoded. 
              Aim: Use mysql option of 123session to have a real load 
                   load balancing system
              Use a mapping like id->camas->localvars
        
        . create a global directory system for camas with open
          API :
            CAMAS Global directory ---> File global directory
                                   |--> Defvar global directory
                                   |--> LDAP global directory
                                   |--> SQL global directory
                                   ...? Another type of global directory
          So when quering the addressbook, we have only one way to
          query the global directories...

        . create a "preauth" system : (quoting grendel) :
          <Grendel> I'll just spit out another idea for CAMAS :)
          <Grendel> it's an addition to the current auth system
          <Grendel> I need something that will enable me to talk to the user
          <Grendel> i.e. during the preauthentication phase
          <Grendel> I need to show him some kind of form, ask questions,
                    activate the account
          <Grendel> the current system doesn't allow for that
          <Grendel> it would be nice if there was a hook to the auth module
                    to allow switching to a different page when the module
                    needs to do that.
          <Grendel> AFTER the user enters his login and password
          <Grendel> probably the best thing wouldbe to open up a separate
                    window then but this is dangerous if the browser doesn't
                    have JavaScript so it should be detected
          <Grendel> because what I need to do is :
                    - the user gets with his modem a login/password pair
                    - the password is just the activation one, once he logs in
                    - he is asked to give a new alias to his e-mail, change the
                      password and fill some form (volutarily) from that on 
                      the account is activated and expires after some time
                    - this done only once per user then they will have a
                      control panel to modify things, but that's a different
                      case althought I'll need to put another button in the 
                      CAMAS screen to transfer the user to the control panel
                      without closing his e-mail.
          <Grendel> I also thought we could do something else to add to camas
                    another feature, namely after login in, the user isn't faced
                    with his inbox at once. He sees a kind of menu: 
                    "Read your email", "Configure option", "Your control panel"
                    etc... etc...
          <Grendel> something like Yahoo et. al have... 
          ==> It is allmost an "entry screen" that can be inserted on demand
              by the auth module between login part and mail reading part.

        . (Low priority) .procmail and .forward editing feature for CAMAS
          ==> I think this may be handled by the auth module, because this
              implies the MTA is on the same machine that the one is running
              Caudium + CAMAS...

        . add a configure script to detect the correct version of
            caudium (maybe a Makefile.in to setup the install) ?

        . Abstraction Layers:

                . INPUT layer ------> Read only access (POP3)
                                 |
                                 +--> Read/Write access (IMAP, NEWS, maildir,
                                                         SQLdb, ...)

                . OUTPUT layer -----> SMTP, maildir, postfix maildrop, ...
                                 |
                                 +--> sendmail (exec)

                . use UIRs (eg: imap://ogirondel_isd@@mail.isdnet.net/INBOX,
                                news://....)

        . See and check if Mikael Brandstrm's IMAP client code can be used
          in this setup.

        . Global Configuration module to handle the configuration of
          all the CAMAS_* modules. (maybe use a more
          sophisticated interface, like everything on the same
          page to avoid browsing up and down all the time in
          the configuration interface)
	   --> This one is really urgent to finish the new camas rxml language.

        . remove all the 'features' stuff, instead use an object
          (eg id->conf->CAMAS->...) to store the webmail's
          configuration. use private and public scopes in
          the class definition.
	   --> This maybe added in Global Configuration module too

        . finish to clean up / split the .h

        . option or module to handle SMIME (crypto)

        . C (or C++) module for Caudium: IMAP client (to replace FastIMHO)

                . look for an clean, portable and thread-safe API.

                maybe see Grendel for this as he has design plans for such
                a client ?

        . move outside non IMAP functions from imapclient.pmod

        . add login access like :
           - standart one
           - direct access (difficult cause 123session no set up... Maybe
             a patch is needed to handle POST and GET before setting up 
             session ?)
             /*
              * something like :
                ((id->query)?("?"+roxen_encode(id->query,"url"):""))
              * in 123 session ?
              */
           - http basic mode 
           - http extended mode (?)

	. readmail:
		- recursive MIME decoding
		- convert images on the fly (ex: pbm -> jpg)

        . Add support (in readmail) for mailing list managements fields
          and extensions (RFC2369).
          Even use such extensions to make some filters ?

------------
(lowpriority)
Run time admin interface: more precise stats (eg % of logouts vs autologouts)

- camas.pike

  oliv3:

  BUGS:
  extended adressbook fails if name or address contains ...

  TODO
  finish <camas_index_output> container

  * (Kiwi): forward a mail as an attachment

  * (Stenad): parse_date() should return a mapping, not an array.
              Benefits: Extendability (new data can be returned).
	                No need for #define of indexes.

  * (Stenad): User-selectable timezone.

  * (Stenad): use Crypto.randomness if available in rand_string().
    (Kiwi)  : seems to be available on allmost every pike (starting with pike
              7.0.x... I'd like to use Crypto.randomness.really_random()->read;
	      better random :)

  QUESTIONS
  + sessobj->address == sessobj->defaultaddress ? => remove one ?
  A: (Stenad) Defaultaddress should go, its an old IMHO thingy.
     If the user wasn't allowed to set-up his own address, the defaultaddress was used.

     Fix: camas_imho.pike:tag_imho_address() to use sessobj->address instead, 
          then defaultaddress can be deleted.
     (kiwi) Done !

  cont_imho_buttonoutput: virer le ct 'inboxes' (obsolete car une seule inbox maintenant)
  et rajouter inbox/sent/trash/drafts (selon les features) + un bouton "notify"
  buttons="compose,mailindex,blah..."

  tag_imho_notify: insre le javascript

  defaultlayout: on ne met pas un frameset dans un head !!!

  <imho_string text="logout">

  PS: todo pour camas : forcer le wrapping des lignes  70-77 caractres de
    facon configurable...

  ??? garder les rand_string en fin d'URL ? (cause: maintenant, nocache)
  -- Xavier yes :) two systems are better than one... (read : dammed M$IE).

  Features => add an option for MDN (and ignore MDN behavior when receiving a mail)


- camas_layout_fs.pike

 oliv3 TODO: load from a tarball

 <Grendel> why the TAR - because right now for each template screen you waste two inodes

- camas_runtime_admin.pike

 add location to enable MRTG graphics using http :)

- camas_features.pike

	add missing defvars like "user dialog... : rfc 822 date ... etc..."
		"User interface..."
		"User preferences..."
		"Outgoing mail..."

	remove the feature to specify Trash/Drafts/Sent/prefs folders.
		Use IMAP standard directories instead (ie: Trash)
		but keep the localization feature

[CIF]:	Site Wide: ....
	New Users: ....
	Users:     ....
- imapclient.pmod
 	handle thread sorting for mails using IMAP server

 - general to CAMAS
   add all RFC references that camas is full compliant (MIME, Imap....) in
   the RFC file.

--=========================== [ Done section ] ==============================--
  * (Stenad): use Crypto.randomness if available in rand_string().
    (Kiwi)  : seems to be available on allmost every pike (starting with pike
              7.0.x... I'd like to use Crypto.randomness.really_random()->read;
	      better random :)
  
  Done using Crypto.randomness.reasonably_random since really_random cannot
  be used on all OS (like Solaris) because lack of /dev/random or /dev/urandom.

@


1.19
log
@Fixing Vida's work.
@
text
@d7 1
a7 1
	. Choose a standart way in output/input of all functions that
d22 1
a22 3
           1. stop use id->imho->sessobj, use id->session_variables instead
              on _every_ modules
           2. stop add nom portables objects in id->session_variables (eg
a27 5
	. oliv3 -> CAMAS_LDAP module: kiwi, ok ?
          Kiwi -> ok but low priority (see remarks under...)
	. oliv3 -> CAMAS_Spellchecker module: kiwi, ok ? 
          Kiwi -> ok but low priority

a80 13
        . clean up the code (replace the QUERY(debug) by
            #ifdef CAMAS_DEBUG..., use werror)

        . templates (started by kiwi): handle all the screens with
                CAMAS tags  (eg <cform>, <cinputlogin>, <cinputpassword>)
                so that nothing in the pages has to be configured through
                the config interface.
	  --> HIGH PRIORITY too...
	   Q(Kiwi): How Can I handle entities using "old" rxml parser
	            in a container tags ? This may be more sexy to use 
		    &camas.msglogin; than <cmsglogin> to get login message
		    from language module ?

a97 3
        . Preferences layer: to store the users prefs
                             (eg: store in a mail, in a SQLdb)

a123 2
        . move functions that can be standalone into modules in CAMAS.pmod

d141 1
a141 1
        . Add support (in readmail) for mailing liste managements fields
@


1.18
log
@Current 1.3 is removed.
@
text
@a185 2
  * (Vida): make a search/search and replace fonction in compose (maybe in javascript ?)

@


1.17
log
@Updated TODO.
Removed old macros
@
text
@@


1.17.2.1
log
@
Search & replace done in javascript for new template system.
@
text
@d186 2
@


1.16
log
@updated TODO
@
text
@d7 8
@


1.15
log
@updated TODO
@
text
@d7 3
@


1.14
log
@Updated TODO
@
text
@d7 3
@


1.13
log
@A little idea of function to add in camas.
@
text
@d245 8
@


1.12
log
@updated TODO
@
text
@d152 4
@


1.11
log
@Updated todo ideas
@
text
@d148 4
@


1.10
log
@
. Corrected a big mistake i made on my last commit in camas_imhoscreens
. Updated imapclient so now camas tell you when it can't find what you search
. Updated TODO with a lowpriority task
. Corrected a problem with filters: a filter was remove if you entered 2 same expression with different field parameter.
@
text
@d135 13
@


1.9
log
@Some replies to Oliver and new tasks :)
@
text
@d216 2
@


1.8
log
@updated TODO
@
text
@d7 9
d17 1
d19 51
d100 3
@


1.7
log
@Add RFC references for CAMAS... To be completed...
@
text
@d7 3
@


1.6
log
@updated
@
text
@d150 5
a154 1
--=========================== [ Done section ] ==============================--@


1.5
log
@updated
@
text
@d142 3
a144 1
	on fixe les repertoires Trash/Drafts/Sent/prefs
d146 3
a148 3
[CIF]:	Site Wide:
	New Users:
	Users:
@


1.4
log
@More things to do :)
@
text
@d135 14
@


1.3
log
@done in 123sessions
@
text
@d64 4
@


1.2
log
@Updated TODO and added some Questions....
@
text
@a64 4
123sessions: include-urls (ie /mail/) so that only urls below this one
                will get a session id.

------------
@


1.1
log
@Moved TODOs in TODO file :)
Basic cleaning of some files.
@
text
@d11 1
a11 1
            #ifdef DEBUG..., use werror)
d17 5
d51 1
@


1.1.1.1
log
@1.3 sync with 1.2
@
text
@a6 78
	. Choose a standart way in output/input of all functions that
          returns / handle strings. 
           Either strings are UTF8 encoded,
           Either strings are Unicoded,
           Either strings are encoded in national caracter of client.
          Anyway, I really think that we must choose either utf8 or
          unicode since pike 7.x have string_to_utf8, utf8_to_string,
          string_to_unicode and unicode_to_string functions.
	. would be cool if we could remove the \Seen flags from mails :)
	. from redax: on the fly uuencoded attachments decoding

	. oliv3 TODO remove this defvar "inboxes" which deprecated for a
	    long time now

        . HIGH PRIORITY : clean the code :
           1. stop use id->imho->sessobj, use id->session_variables instead
              on _every_ modules
           2. stop add nom portables objects in id->session_variables (eg
              object that cannot MIME.base64.encoded. 
              Aim: Use mysql option of 123session to have a real load 
                   load balancing system
              Use a mapping like id->camas->localvars
        
	. oliv3 -> CAMAS_LDAP module: kiwi, ok ?
          Kiwi -> ok but low priority (see remarks under...)
	. oliv3 -> CAMAS_Spellchecker module: kiwi, ok ? 
          Kiwi -> ok but low priority

        . create a global directory system for camas with open
          API :
            CAMAS Global directory ---> File global directory
                                   |--> Defvar global directory
                                   |--> LDAP global directory
                                   |--> SQL global directory
                                   ...? Another type of global directory
          So when quering the addressbook, we have only one way to
          query the global directories...

        . create a "preauth" system : (quoting grendel) :
          <Grendel> I'll just spit out another idea for CAMAS :)
          <Grendel> it's an addition to the current auth system
          <Grendel> I need something that will enable me to talk to the user
          <Grendel> i.e. during the preauthentication phase
          <Grendel> I need to show him some kind of form, ask questions,
                    activate the account
          <Grendel> the current system doesn't allow for that
          <Grendel> it would be nice if there was a hook to the auth module
                    to allow switching to a different page when the module
                    needs to do that.
          <Grendel> AFTER the user enters his login and password
          <Grendel> probably the best thing wouldbe to open up a separate
                    window then but this is dangerous if the browser doesn't
                    have JavaScript so it should be detected
          <Grendel> because what I need to do is :
                    - the user gets with his modem a login/password pair
                    - the password is just the activation one, once he logs in
                    - he is asked to give a new alias to his e-mail, change the
                      password and fill some form (volutarily) from that on 
                      the account is activated and expires after some time
                    - this done only once per user then they will have a
                      control panel to modify things, but that's a different
                      case althought I'll need to put another button in the 
                      CAMAS screen to transfer the user to the control panel
                      without closing his e-mail.
          <Grendel> I also thought we could do something else to add to camas
                    another feature, namely after login in, the user isn't faced
                    with his inbox at once. He sees a kind of menu: 
                    "Read your email", "Configure option", "Your control panel"
                    etc... etc...
          <Grendel> something like Yahoo et. al have... 
          ==> It is allmost an "entry screen" that can be inserted on demand
              by the auth module between login part and mail reading part.

        . (Low priority) .procmail and .forward editing feature for CAMAS
          ==> I think this may be handled by the auth module, because this
              implies the MTA is on the same machine that the one is running
              Caudium + CAMAS...

d11 1
a11 1
            #ifdef CAMAS_DEBUG..., use werror)
a16 5
	  --> HIGH PRIORITY too...
	   Q(Kiwi): How Can I handle entities using "old" rxml parser
	            in a container tags ? This may be more sexy to use 
		    &camas.msglogin; than <cmsglogin> to get login message
		    from language module ?
a31 3
        . See and check if Mikael Brandstrm's IMAP client code can be used
          in this setup.

a45 1
	   --> This maybe added in Global Configuration module too
d58 3
a60 24
        . move outside non IMAP functions from imapclient.pmod

        . move functions that can be standalone into modules in CAMAS.pmod

        . add login access like :
           - standart one
           - direct access (difficult cause 123session no set up... Maybe
             a patch is needed to handle POST and GET before setting up 
             session ?)
             /*
              * something like :
                ((id->query)?("?"+roxen_encode(id->query,"url"):""))
              * in 123 session ?
              */
           - http basic mode 
           - http extended mode (?)

	. readmail:
		- recursive MIME decoding
		- convert images on the fly (ex: pbm -> jpg)

        . Add support (in readmail) for mailing liste managements fields
          and extensions (RFC2369).
          Even use such extensions to make some filters ?
d78 2
a127 30

- camas_features.pike

	add missing defvars like "user dialog... : rfc 822 date ... etc..."
		"User interface..."
		"User preferences..."
		"Outgoing mail..."

	remove the feature to specify Trash/Drafts/Sent/prefs folders.
		Use IMAP standard directories instead (ie: Trash)
		but keep the localization feature

[CIF]:	Site Wide: ....
	New Users: ....
	Users:     ....
- imapclient.pmod
 	handle thread sorting for mails using IMAP server

 - general to CAMAS
   add all RFC references that camas is full compliant (MIME, Imap....) in
   the RFC file.

--=========================== [ Done section ] ==============================--
  * (Stenad): use Crypto.randomness if available in rand_string().
    (Kiwi)  : seems to be available on allmost every pike (starting with pike
              7.0.x... I'd like to use Crypto.randomness.really_random()->read;
	      better random :)
  
  Done using Crypto.randomness.reasonably_random since really_random cannot
  be used on all OS (like Solaris) because lack of /dev/random or /dev/urandom.
@


