]> err.no Git - scalable-opengroupware.org/blob - UI/MailerUI/README
git-svn-id: http://svn.opengroupware.org/SOGo/inverse/trunk@1127 d1b88da0-ebda-0310...
[scalable-opengroupware.org] / UI / MailerUI / README
1 SOGO Mailer UI
2 ==============
3
4 - own (Thunderbird styled) frame
5 - component for tree
6
7 TODO
8 ====
9 - a lot ;->
10 - SOPE: does not recognize <input type="button"> !
11
12 Components
13 ==========
14 UIxMailAccountView.wox
15 UIxMailAccountsView.wox
16 UIxMailEditor.wox
17 UIxMailToSelection.wox
18 UIxMailListView.wox
19 UIxMailMainFrame.wox
20 UIxMailTree.wox
21 UIxMailView.wox
22
23 Class Hierarchy
24 ===============
25
26 [NSObject]
27   MailerUIProduct
28   [WOComponent]
29     [SoComponent]
30       <UIxComponent>
31         UIxFilterList
32         UIxMailAccountView
33         UIxMailAccountsView
34         UIxMailAddressbook
35         UIxMailEditor
36         (Scheduler_Privates)
37         UIxMailListView
38         UIxMailMainFrame
39         UIxMailToSelection
40         UIxMailToolbar
41         UIxMailTree
42         UIxMailView
43         UIxSieveEditor
44       UIxMailSortableTableHeader
45     UIxMailEditorAttach.m
46     UIxMailFilterPanel
47     UIxMailMoveToPopUp
48     UIxMailWindowCloser
49   [WODirectAction]
50     UIxMailEditorAction
51       UIxMailForwardAction
52       UIxMailReplyAction
53   [NSFormatter]
54     UIxMailFormatter
55       UIxMailDateFormatter
56       UIxSubjectFormatter
57       UIxEnvelopeAddressFormatter
58   UIxMailTreeBlock
59   [WOContext]
60     (UIxMailer)
61
62 Defaults
63 ========
64
65 SOGoShowInternetMarker - bool
66 - show a marker in the editor that the request is from the outside
67
68 SOGoInternetDetectQualifier - string
69 - an EOQualifier to detect whether a set of HTTP headers is from the outside,
70   eg: "NOT (minequprovenance = 'intranet')"
71       -SOGoInternetDetectQualifier '"NOT (minequprovenance = \"intranet\")"'
72   Note: all header field names are lowercase
73
74 SOGoInternetMailHeaders - dictionary
75 - if a request was detected as coming from the Internet, add the mail headers
76   specified in this default
77   eg: { received = "sogo depuis internet"; }
78   -SOGoInternetMailHeaders "{received=\"sogo depuis internet\"; }"
79
80 SOGoMailEditorKeepTmpFile
81 - for debugging, if a mail was send, keep the file containing the MIME in the
82   temporary directory for review instead of deleting it
83
84 SOGoMailTreeRootClass
85 - configure the root class of the mail tree, eg:
86   - SOGoMailAccounts - standard view, show all IMAP4 accounts
87   - SOGoMailAccount  - just show the standard mail account (tree at Inbox!)
88   - SoApplication    - stop at the application object (show all folders)
89
90 SOGoDontUseETagsForMailViewer - YES|NO
91 - when enable SOGo won't tag mail viewers with an entity-tag (HTTP etag)
92   - the etag ensures that the viewer will only get resend to the browser when
93     it changed. In the case of IMAP4 this is never because URLs are one-time
94     IDs in the IMAP4 server and messages cannot be edited in IMAP4
95   - use the default for debugging (otherwise you won't see changes ...)
96
97 SOGoUseLocationBasedSentFolder - YES | NO
98 - when enable SOGo looks up the Sent folder by traversing the lookup-path
99   until it finds a SOGoMailAccount object and then asks the account for the
100   Sent folder.
101
102 Notes
103 =====
104
105 - we might want to bind the content viewers as SOPE methods to the mail class?
106   eg "viewTextPlain"
107   - this would not return a WOComponent, but a SoPageInvocation
108   - caching might be more difficult 
109     - some 'reuse component' support in SoPageInvocation for stateless
110       components?
111       - watch nested calls
112   - for this we would need to add support for embedded calling of SOPE methods
113     <var:component method="viewTextPlain" /> ?
114
115 Bodystructures
116 ==============
117
118 Multiparts: multipart/MIXED, multipart/SIGNED
119
120 Feature: we fetch all plain/text bodies in a single run by traversing the
121          body structure.
122
123 Sample Bodystructure (GPG):
124 ---snip---
125   {
126     parts = (
127         {
128             bodyId = ""; 
129             description = ""; 
130             encoding = "QUOTED-PRINTABLE"; 
131             lines = 22; 
132             parameterList = {}; 
133             size = 731; 
134             subtype = PLAIN; 
135             type = text; 
136         }, 
137         {
138             bodyId = ""; 
139             description = "Esta parte del mensaje"; 
140             encoding = 7BIT; 
141             parameterList = {name = "signature.asc"; }; 
142             size = 196; 
143             subtype = "PGP-SIGNATURE"; 
144             type = application; 
145         }
146     ); 
147     subtype = SIGNED; 
148     type = multipart; 
149   }
150 ---snap---
151
152 Sample Body Structure (Image):
153 ---snip---
154   {
155     parts = (
156         {
157             bodyId = ""; 
158             description = ""; 
159             encoding = BASE64; 
160             parameterList = {name = "PoseChau.jpg"; "x-unix-mode" = 0644; }; 
161             size = 58370; 
162             subtype = JPEG; 
163             type = image; 
164         }, 
165         {
166             bodyId = ""; 
167             description = ""; 
168             encoding = 7BIT; 
169             lines = 2; 
170             parameterList = {charset = "US-ASCII"; format = flowed; }; 
171             size = 57; 
172             subtype = PLAIN; 
173             type = text; 
174         }
175     ); 
176     subtype = MIXED; 
177     type = multipart; 
178   }
179 ---snap---