source: ZMS/trunk/import/discussions.metaobj.xml @ 723

Revision 723, 98.3 KB checked in by chris, 3 years ago (diff)

zms-2.11.1-930

Line 
1<?xml version="1.0" encoding="utf-8"?>
2<list>
3<item type="dictionary"><dictionary>
4<item key="dtml"><![CDATA[<!-- BO bodyContentZMSCustom_BulletinBoardRatings -->
5
6  <h2><dtml-var "getTitlealt(REQUEST)"></h2>
7  <p class="description"><dtml-var "len(getObjProperty(getMetaobj(meta_id)['attrs'][0]['id'],REQUEST))"> <dtml-var "getLangStr('ATTR_RECORDS',lang)"></p>
8
9<!-- EO bodyContentZMSCustom_BulletinBoardRatings -->]]></item>
10<item key="enabled" type="int">0</item>
11<item key="key"><![CDATA[BulletinBoardRatings]]></item>
12<item key="value" type="dictionary"><dictionary>
13<item key="__obj_attrs__" type="list"><list>
14<item type="dictionary"><dictionary>
15<item key="custom" type="int">0</item>
16<item key="default"></item>
17<item key="id"><![CDATA[records]]></item>
18<item key="keys" type="list"><list>
19</list>
20</item>
21<item key="mandatory" type="int">1</item>
22<item key="multilang" type="int">0</item>
23<item key="name"><![CDATA[records]]></item>
24<item key="repetitive" type="int">0</item>
25<item key="type"><![CDATA[list]]></item>
26</dictionary>
27</item>
28<item type="dictionary"><dictionary>
29<item key="custom" type="int">0</item>
30<item key="default"></item>
31<item key="id"><![CDATA[bbrId]]></item>
32<item key="keys" type="list"><list>
33</list>
34</item>
35<item key="mandatory" type="int">1</item>
36<item key="multilang" type="int">0</item>
37<item key="name"><![CDATA[Id]]></item>
38<item key="repetitive" type="int">0</item>
39<item key="type"><![CDATA[identifier]]></item>
40</dictionary>
41</item>
42<item type="dictionary"><dictionary>
43<item key="custom" type="int">1</item>
44<item key="default"></item>
45<item key="id"><![CDATA[bbrMsg]]></item>
46<item key="keys" type="list"><list>
47</list>
48</item>
49<item key="mandatory" type="int">0</item>
50<item key="multilang" type="int">0</item>
51<item key="name"><![CDATA[Msg]]></item>
52<item key="repetitive" type="int">0</item>
53<item key="type"><![CDATA[BulletinBoardMessages]]></item>
54</dictionary>
55</item>
56<item type="dictionary"><dictionary>
57<item key="custom" type="int">1</item>
58<item key="default"></item>
59<item key="id"><![CDATA[bbrRate]]></item>
60<item key="keys" type="list"><list>
61<item><![CDATA[1]]></item>
62<item><![CDATA[2]]></item>
63<item><![CDATA[3]]></item>
64<item><![CDATA[4]]></item>
65<item><![CDATA[5]]></item>
66</list>
67</item>
68<item key="mandatory" type="int">0</item>
69<item key="multilang" type="int">0</item>
70<item key="name"><![CDATA[Rate]]></item>
71<item key="repetitive" type="int">0</item>
72<item key="type"><![CDATA[select]]></item>
73</dictionary>
74</item>
75<item type="dictionary"><dictionary>
76<item key="custom" type="int">1</item>
77<item key="default"></item>
78<item key="id"><![CDATA[bbrExpl]]></item>
79<item key="keys" type="list"><list>
80</list>
81</item>
82<item key="mandatory" type="int">0</item>
83<item key="multilang" type="int">0</item>
84<item key="name"><![CDATA[Explanation]]></item>
85<item key="repetitive" type="int">0</item>
86<item key="type"><![CDATA[text]]></item>
87</dictionary>
88</item>
89<item type="dictionary"><dictionary>
90<item key="custom" type="int">1</item>
91<item key="default"></item>
92<item key="id"><![CDATA[bbrDateTime]]></item>
93<item key="keys" type="list"><list>
94</list>
95</item>
96<item key="mandatory" type="int">0</item>
97<item key="multilang" type="int">0</item>
98<item key="name"><![CDATA[Date/Time]]></item>
99<item key="repetitive" type="int">0</item>
100<item key="type"><![CDATA[datetime]]></item>
101</dictionary>
102</item>
103<item type="dictionary"><dictionary>
104<item key="custom" type="file">
105<data content_type="image/gif" filename="stars-0-5.gif" type="file">47494638396140000c00d50000bdbf9ea2a374afb0889999669f9f70a6a679acac83b3b38cb9b996bfbfa0c6c6a9ccccb2d2d2bcd9d9c5dbdbc9dfdfcfe5e5d9ecece2eeeee5f2f2ecf9f9f5d1cfb6e7e5d8f9f8f4f7c758edab30bf9e63e39516ad7720af823be6d9c4cfb58dffffff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002c0000000040000c000006ff40907048bc3888c82372685c0a290fa7b021ad120101e925a05c56045286410a1950acd68ec6e2740000520180bd342020ce04628196563a1b704b011702124b6e1682440d0910094b130614637d421a1d991c1b19029e9f9e700e01a19f0187a4070807ac05132005acb20705540906ac0951561f1a9c18194212728648176f02154b7a067c4811b808674413070a961f80c0200ec5c35dc3ca205f1743150c420b93436211200d05ee4210057896209b19c10087428a43ff861413b208c401792010bc4a4745088386f700713855a14bc551cab2083c4691c82404f11e0e51b880c08347f74058e8c0e18305398b881df3540ec430010e86019806cd4003406809200989a58082b54a960070f02084e39000e2b871115221009d63bb18c47b92a0c03c02101798b957a1e6102512ba0853521649d669431a3e40388fee9020003b</data></item>
106<item key="default"></item>
107<item key="id"><![CDATA[stars-0-5]]></item>
108<item key="keys" type="list"><list>
109</list>
110</item>
111<item key="mandatory" type="int">0</item>
112<item key="multilang" type="int">0</item>
113<item key="name"><![CDATA[stars-0-5]]></item>
114<item key="repetitive" type="int">0</item>
115<item key="type"><![CDATA[resource]]></item>
116</dictionary>
117</item>
118<item type="dictionary"><dictionary>
119<item key="custom" type="file">
120<data content_type="image/gif" filename="stars-1-0.gif" type="file">47494638396140000c00b30f00fefefdb4b690c4c5a7e19212a6a87be7e6dad4d4bdbd9b64aa7727f6f6f1eeeee5f6bc46ceb38adfddccbb8633ffffff21f9040100000f002c0000000040000c000004fff0c94993a058153ccbe60f5024e0d390652a15880226c1050a018a15c49711ae5a260704038413d8260a5a634630003834a30fa4400c1ccf8a40d030700c60ef8d2be84d00b5da34d40822108e8503ee3804028480287fbfe747787d7e4e027c7d4d00857d0d5920000c560b92039475018c0099990677029a9a9c790a9f0030a2a4309e3e0006910b94085ea99a169e8901a399342e38987b5ebd9a0a048c6bac0e9494432b359905520f1698d213024ebac50f60099b4e6bd107575603071db87f061f0ae97816620f5c06c45d280205f2e9d053096f07407012003420604f9e35090dee342880474c228249eef4c063240681232a582c4b00c98505350f2e8a4890f701861a1cdeb4e58846308b3c332a042e39536049826c1234442b0053848b85184e842cd0686851091100003b</data></item>
121<item key="default"></item>
122<item key="id"><![CDATA[stars-1-0]]></item>
123<item key="keys" type="list"><list>
124</list>
125</item>
126<item key="mandatory" type="int">0</item>
127<item key="multilang" type="int">0</item>
128<item key="name"><![CDATA[stars-1-0]]></item>
129<item key="repetitive" type="int">0</item>
130<item key="type"><![CDATA[resource]]></item>
131</dictionary>
132</item>
133<item type="dictionary"><dictionary>
134<item key="custom" type="file">
135<data content_type="image/gif" filename="stars-1-5.gif" type="file">47494638396140000c00b30f00c7c6a8fefefdb2b48de39414a3a577e7e7dac29d60d7d5bfae7925f4c152f7f6f1efeee5d4b887e1deceb78940ffffff21f9040100000f002c0000000040000c000004fff0c94915a0b8143c359741a17c4f3392a8d420cbb718d7070867266cdc42e0e9a71808c66745cbcd1a32c2a136990198bdc902317004303f43e2c03978b9194003d0a204048b6234d00022108e8403eea8bfa906817eaf1709087c7f070100807c0400847c0d5724010c5403090903950e069795038301077a8901a1a19e7a0ba2a10a7ba6a7a9893d9d549395085c2f910c84a033ab8a2d05028ca1bf5c0504c1013a8c510fb09a034212056fcf0b4f12169c164812009c84ca0f5e0aa383cb0f3f03d30306132be96807380b070d7fd84d0d074af9270005faf1ac2d53f0c6c00f382000c0a127a09b0a3df104254454ad94844fad084041210d9a02482d335e3828532c863e1ca98a142b176ec7394427f49579d5601b887f0fe63592b06083820633991568d180878a111a763e48ca2102003b</data></item>
136<item key="default"></item>
137<item key="id"><![CDATA[stars-1-5]]></item>
138<item key="keys" type="list"><list>
139</list>
140</item>
141<item key="mandatory" type="int">0</item>
142<item key="multilang" type="int">0</item>
143<item key="name"><![CDATA[stars-1-5]]></item>
144<item key="repetitive" type="int">0</item>
145<item key="type"><![CDATA[resource]]></item>
146</dictionary>
147</item>
148<item type="dictionary"><dictionary>
149<item key="custom" type="file">
150<data content_type="image/gif" filename="stars-2-0.gif" type="file">47494638396140000c00b30f00e39515c9c8abfefdfdad9a63b1b38bc7a46ce7e5d8d8d9c5aa7726b88635f6f5f0e6d8c2f6bd48f0ede3cfb285ffffff21f9040100000f002c0000000040000c000004fff0c94955a0d82c3c8de1926028e07390652a19480336c35006049a111f07bb6aa9140807688148f0280dda01a4147068015b0f8900249c48470220c40402870b26193e866ab5e943b01820de0946a29818cc8b0c007d40e8e3147e8103070234810403018581842902055b000c79005676059293950909048a02a0a0077e0da1a0807da5a6808a3d85559a7a1b305b9a45a034aa8b2e060484a0bd4bc1a10dbe58ae0191955d0f6d959b3c16bf16390f60a1d7120727a28d6a3f56555613ce45561b0f0d07bd356013600783db280106f1eb516a0f0a73050a6e09420428b26060822ea37cb15bb22640a224a924f489e2298d1a165d043868b10f128f05092b0a4870980315895ead4c0cf8c00a4b3c338e345010312be58a0d0a0c9811c1ab9ab693068e3dd029544204003b</data></item>
151<item key="default"></item>
152<item key="id"><![CDATA[stars-2-0]]></item>
153<item key="keys" type="list"><list>
154</list>
155</item>
156<item key="mandatory" type="int">0</item>
157<item key="multilang" type="int">0</item>
158<item key="name"><![CDATA[stars-2-0]]></item>
159<item key="repetitive" type="int">0</item>
160<item key="type"><![CDATA[resource]]></item>
161</dictionary>
162</item>
163<item type="dictionary"><dictionary>
164<item key="custom" type="file">
165<data content_type="image/gif" filename="stars-2-5.gif" type="file">47494638396140000c00b30f00e49514c6c5a7af9860fdfdfcb0b28bc3a575e7e4d5ac7624d6d7c2d2b889be8831f7f6f1f5ba43e5d6baefece2ffffff21f9040100000f002c0000000040000c000004fff0c94957a0d8343c8de3d2602ce08390652a19c7c739425126049a110608bb2ab8148704a87128f0268e8220c709101083262160eb511c0780207a552812174ce28b78051081e36350ab59d70dc161ae60280ede3b9d01c0e7e7596004838402504e8483020103885350290340000c9500970a7294969802020a970c0d030308840ea4a90ba7a9a4ab8c3d03449b97071b0e5e9c0a05a4097300a34e1f064fa9c465c7a90ec56fb2a098422b59970005283f07a28d4c0f67a901065c0827a4e35c563f0077a00213b3bf094c30ea356713e00886e32869f9080e54de3c5830c79a9c76037d0968a0300c9103ff069559136011c0412e065199e2e60d8b680b347c7d8021000511190f7c6d183885c432582696b084994f4d0911dcd66878e060d4950d0b1ae414312ce7831147c351f0706e4204003b</data></item>
166<item key="default"></item>
167<item key="id"><![CDATA[stars-2-5]]></item>
168<item key="keys" type="list"><list>
169</list>
170</item>
171<item key="mandatory" type="int">0</item>
172<item key="multilang" type="int">0</item>
173<item key="name"><![CDATA[stars-2-5]]></item>
174<item key="repetitive" type="int">0</item>
175<item key="type"><![CDATA[resource]]></item>
176</dictionary>
177</item>
178<item type="dictionary"><dictionary>
179<item key="custom" type="file">
180<data content_type="image/gif" filename="stars-3-0.gif" type="file">47494638396140000c00b30f00e39515ae9962cac5a7c7a266fdfdfbb0b189e9e5d7ab7827ba8736d8d8c5f5bc46e5d7c2cdb082f5f3edefece2ffffff21f9040100000f002c0000000040000c000004fff0c9499ba0d82c3cd7e60f6134e09310653a1987033641500e01c91985f106ae5a36830303b438207a1407e2f0c1080a27ce5380f2711c0700a23a6930108021e68b102705090152422834dcd6d02270a823144b0422b0342a0046467d597882058701274f878c01548b05685c1c045f000a98009a7b080397995a077c9f7f9b01050e04aaaa6f87a9abaa919320040284a54c0f0ea39946aa96bd083a3827aac40fc4ab0e50b325b5609a612b01d15a3d40d5084d92aa921209c504e0cd3f0ca19b1dd4465a1f069e755a66680989e0360206f409060236560d4b06c030c2c6963683626c1d10b06089985a8e1c2cea71a85f243871585c08c1a0c50320473124141920a1e307803574c9fa1640c71b2a2cd7a410d12484065d0b26dd6cb040c704020b5c18f039210189a13a53718800003b</data></item>
181<item key="default"></item>
182<item key="id"><![CDATA[stars-3-0]]></item>
183<item key="keys" type="list"><list>
184</list>
185</item>
186<item key="mandatory" type="int">0</item>
187<item key="multilang" type="int">0</item>
188<item key="name"><![CDATA[stars-3-0]]></item>
189<item key="repetitive" type="int">0</item>
190<item key="type"><![CDATA[resource]]></item>
191</dictionary>
192</item>
193<item type="dictionary"><dictionary>
194<item key="custom" type="file">
195<data content_type="image/gif" filename="stars-3-5.gif" type="file">47494638396140000c00b30f00fbfaf8cbab78b2955acdc5a4f0ebdfa97726b1b28ae99812b28338e5ddcbcd8716ecb03dc58f37f8c95adbd3bbffffff21f9040100000f002c0000000040000c000004fff0c949c1a098243cd3e60f9000e033966857102021086520b05c227cd99ca2405004a0448141a310180507483620610686e6ae8538209c134280a10062b60c2fc5b61814250003413d0dd90a88e102894008e2f0c5025ec717f4717577710a07068788874d508a27253d550b0d0d079576080107920b950a05020c9a0d9c070a82a40b04006987aaabaf51588f0e050a92a5490f2ea17a0743ab0155a3a5082c0e085c071a064a6b23abceb23c0e8595611d0295c4343dd5070c4a125bb604038e0e0eafe8d23c010a9e8508d8be55e01236a605df62010ba60e09d24930e340808372ec4a108823008000386806c071201193045a05ccc5b910c2071146343714a58192304846343e58b82876cfe2031f1f5ce84880c9494195b12eea982202879b0d0404665102e06005a300319c20a0ca48530c1100003b</data></item>
196<item key="default"></item>
197<item key="id"><![CDATA[stars-3-5]]></item>
198<item key="keys" type="list"><list>
199</list>
200</item>
201<item key="mandatory" type="int">0</item>
202<item key="multilang" type="int">0</item>
203<item key="name"><![CDATA[stars-3-5]]></item>
204<item key="repetitive" type="int">0</item>
205<item key="type"><![CDATA[resource]]></item>
206</dictionary>
207</item>
208<item type="dictionary"><dictionary>
209<item key="custom" type="file">
210<data content_type="image/gif" filename="stars-4-0.gif" type="file">47494638396140000c00b30f00fbfbf8c8a163b39459d0c7a8a87523f0ebe0b28135ea9811e3d9c4b0b188c48f39f8c757efae35cf8918cdaf80ffffff21f9040100000f002c0000000040000c000004fff0c949c1a0b8203cd1e60f8014e0830065da112457084119082d86185f46ab2910100e1082a0a84d0a0a1cc80144610689819397311c0c5349c1a16804315cc59782083414390920516053430881c1406428087339ddc060e0e77304047d7b027a757b06098b51168c09273d0e560c0b0b0798068601079597070d9a0a9d0b0c98679aa696a60704026c00b1b28d3c16060d95a0041b2fa37dad0ab19307a5a00624370a950c0d400f6d27b1d0593d030d98a06371d8a12d3ed7980a17120e9ca7014e0852b11ed4920dcdd7021d02adb7685a6674076213016604e00568314083801152de3ca33350001e3503f0a89bf325228101379c85f85124c09c0f8b3aa44449e0ae44818b6a989028e0b1c58d180f987c78b1e38603271179d132b1838a883400343c4b7864830823474da47950f059812c059e728800003b</data></item>
211<item key="default"></item>
212<item key="id"><![CDATA[stars-4-0]]></item>
213<item key="keys" type="list"><list>
214</list>
215</item>
216<item key="mandatory" type="int">0</item>
217<item key="multilang" type="int">0</item>
218<item key="name"><![CDATA[stars-4-0]]></item>
219<item key="repetitive" type="int">0</item>
220<item key="type"><![CDATA[resource]]></item>
221</dictionary>
222</item>
223<item type="dictionary"><dictionary>
224<item key="custom" type="file">
225<data content_type="image/gif" filename="stars-4-5.gif" type="file">47494638396140000c00b30f00c7a267faf8f4b59151dccaaaab7725efe9dcea9812b28339c99035cdb185f5c454cd8716e4dac6edac35b5b690ffffff21f9040100000f002c0000000040000c000004fff0c949c3a0b8303cd9e64fc014e0c30465da1124570840090828371c5f26b42a180084046810e44d5e840b0791ac51120287b347291c0c87e9a38058248498040201a610110063e8a09052430c01618e68300f78c261de68e8f17b7c0d7b07028404757785790b0d030e900e27290109570d0a0a069b8b8d999b0600850806980d9b0b86040699a79b86579b0a01b4905a1c16049e060b495b7b9f0668b496aca70b0724440b0ac707170c888d010592b73e030ba0641344db00353fda9b084a0f02e30602033537cc22936f950bbdda02ddab7c091f0500bdabdc241c58c0640180043500344835a0da351f7bc0c93920e10701000c80ac93402409833d60400280b452a8851c1a0e1e3d74e12b4402165b04d0e07800cc4b7e3251dc4028e1e6968b35e2a82901af82862decaa6c106184e98301393892f030a540815b1100003b</data></item>
226<item key="default"></item>
227<item key="id"><![CDATA[stars-4-5]]></item>
228<item key="keys" type="list"><list>
229</list>
230</item>
231<item key="mandatory" type="int">0</item>
232<item key="multilang" type="int">0</item>
233<item key="name"><![CDATA[stars-4-5]]></item>
234<item key="repetitive" type="int">0</item>
235<item key="type"><![CDATA[resource]]></item>
236</dictionary>
237</item>
238<item type="dictionary"><dictionary>
239<item key="custom" type="file">
240<data content_type="image/gif" filename="stars-5-0.gif" type="file">47494638396140000c00b30f00c49f6afbf8f4a77426b78f53dcc9adeb9811e7dac8c68e35b18037ceb080f7c655f2eadef2b033cf8817dd9f38ffffff21f9040100000f002c0000000040000c000004fff0c94903a178193ccde64f602ce0430465da0924b70c40090c2867205f26e42a17008204c82038b4282fc4859308d6280904e0d943220a08ea639138348498ee014c31001a075e68803daa440304a2c83808e4f13982e1b8cbe502020e0c7a0379747a0887070a077f0027290151050c0a0a05998a309597990d8a079d0c9f71030e0597a4050286a89e9a533d16080d96050d02172fa20aa445019357beb808243783beb9423707b7ac9155160d9905631d6c9fc6123fd499074b0f0900d55f3504d9b8095a92090db90d0e03d8acb5e01266a002d664000ef00d00b4f097cb0b8d2adce64c1970871b813b0408c801f350d78d20dc80180120e703431a00371cb951b14017b7262416cc68712386b81d125e1cbcb14ec2c30d0ba49c638150048f001ab6448bb941841ba326d4103866808a07761100003b</data></item>
241<item key="default"></item>
242<item key="id"><![CDATA[stars-5-0]]></item>
243<item key="keys" type="list"><list>
244</list>
245</item>
246<item key="mandatory" type="int">0</item>
247<item key="multilang" type="int">0</item>
248<item key="name"><![CDATA[stars-5-0]]></item>
249<item key="repetitive" type="int">0</item>
250<item key="type"><![CDATA[resource]]></item>
251</dictionary>
252</item>
253<item type="dictionary"><dictionary>
254<item key="custom" type="file">
255<data content_type="image/gif" filename="ico_rating.gif" type="file">47494638396112001000b30000aa7727e19212bb8633bd9b64f6bc46f6f6f1ceb38afefefdd4d4bdeeeee5e7e6dadfddccc4c5a7ffffff00000000000021f9040100000d002c0000000012001000000443b0c949abbdf8b27c15e0d60018e0940081008a002010822b0c97811278a0cf1872133a00828310e87424ce20850ad0382d9a4895f1241bb64466b1a828baa5b0581201003b</data></item>
256<item key="default"></item>
257<item key="id"><![CDATA[icon]]></item>
258<item key="keys" type="list"><list>
259</list>
260</item>
261<item key="mandatory" type="int">0</item>
262<item key="multilang" type="int">0</item>
263<item key="name"><![CDATA[icon]]></item>
264<item key="repetitive" type="int">0</item>
265<item key="type"><![CDATA[resource]]></item>
266</dictionary>
267</item>
268</list>
269</item>
270<item key="access" type="dictionary"><dictionary>
271<item key="edit" type="list"><list>
272<item><![CDATA[ZMSAdministrator]]></item>
273<item><![CDATA[ZMSAuthor]]></item>
274<item><![CDATA[ZMSEditor]]></item>
275</list>
276</item>
277<item key="insert" type="list"><list>
278<item><![CDATA[ZMSAdministrator]]></item>
279<item><![CDATA[ZMSAuthor]]></item>
280<item><![CDATA[ZMSEditor]]></item>
281</list>
282</item>
283</dictionary>
284</item>
285<item key="acquired" type="int">0</item>
286<item key="name"><![CDATA[Ratings]]></item>
287<item key="package"><![CDATA[com.zms.discussions]]></item>
288<item key="type"><![CDATA[ZMSRecordSet]]></item>
289</dictionary>
290</item>
291</dictionary>
292</item>
293<item type="dictionary"><dictionary>
294<item key="dtml"></item>
295<item key="enabled" type="int">1</item>
296<item key="key"><![CDATA[com.zms.discussions]]></item>
297<item key="value" type="dictionary"><dictionary>
298<item key="__obj_attrs__" type="list"><list>
299</list>
300</item>
301<item key="access" type="dictionary"><dictionary>
302<item key="edit" type="list"><list>
303</list>
304</item>
305<item key="insert" type="list"><list>
306</list>
307</item>
308</dictionary>
309</item>
310<item key="acquired" type="int">0</item>
311<item key="name"><![CDATA[Discussions]]></item>
312<item key="package"><![CDATA[com.zms.peerreview]]></item>
313<item key="type"><![CDATA[ZMSPackage]]></item>
314</dictionary>
315</item>
316</dictionary>
317</item>
318<item type="dictionary"><dictionary>
319<item key="dtml"><![CDATA[<!-- BO bodyContentZMSCustom_BulletinBoard -->
320
321<dtml-if "URL.find('/manage')>=0">
322    <h2><dtml-var "getTitlealt(REQUEST)"></h2>
323<dtml-else>
324    <dtml-var "getObjProperty('initReq',REQUEST)">
325    <dtml-var "getObjProperty('displayTabs',REQUEST)">
326    <div style="padding: 4px; border-bottom: solid 1px silver; border-right: solid 1px silver; background-color: #C8DBE2;">
327        <dtml-var "getObjProperty(REQUEST.get(actionId),REQUEST)">
328        <dtml-var "getObjProperty(tabSheet,REQUEST)">
329    </div>
330</dtml-if>
331
332<!-- EO bodyContentZMSCustom_BulletinBoard -->]]></item>
333<item key="enabled" type="int">1</item>
334<item key="key"><![CDATA[BulletinBoard]]></item>
335<item key="value" type="dictionary"><dictionary>
336<item key="__obj_attrs__" type="list"><list>
337<item type="dictionary"><dictionary>
338<item key="custom"><![CDATA[ZMSPackage Discussions-3.0.1
339------------------------------
340- requires ZMS-2.8.1 or higher
341- runs with ZMS-2.3.2-b45 (without package-functionality)
342
343Author:
344- Christian Meier <post@christianmeier.info>
345- based on Bulletin-Board-2.0.2 (26.05.2004) by Dr. Frank Hoffmann <fh@hoffmannliebenberg.de>
346
347Overview:
348- [com.zms.discussions] Discussions (Package)
349  |_[BulletinBoard] Bulletin-Board (Page-Element)
350  |_[BulletinBoardMessages] Messages (Datatable)
351  |_[BulletinBoardNotifications] Notifications (Datatable)
352  |_[BulletinBoardRatings] Ratings (Datatable)
353
354Features:
355- Notfication for coming replies
356- Rating the usefulness of content
357- Tab "Overview" thread-navigation is clearer
358- Tab "New Topic" inserted
359- "Reply" opens a new screen
360
361History:
362- 2005-01-10 added Notification-handling to alert on new messages
363- 2005-03-04 added Unsubscription-handling for alterting on new messages
364- 2005-10-24 added Ranking-handling for rating the usefulness of content
365- 2005-12-17 completed code-review and cleanup of user interface
366- 2006-01-04 added multilang-support and packaged
367
368Todo:
369- cleanup method-names (displayNew, insertNew, ...)
370- create methods for calculateRating / parseLinks in displayMessage
371- create methods for sendMail in sendNotification
372- make it tableless / cleanup css
373- encapsulate inline styles (f_css_defaults) => problem with SpecObj-Resource-Properties]]></item>
374<item key="default"></item>
375<item key="id"><![CDATA[_README]]></item>
376<item key="keys" type="list"><list>
377</list>
378</item>
379<item key="mandatory" type="int">0</item>
380<item key="multilang" type="int">0</item>
381<item key="name"><![CDATA[README]]></item>
382<item key="repetitive" type="int">0</item>
383<item key="type"><![CDATA[constant]]></item>
384</dictionary>
385</item>
386<item type="dictionary"><dictionary>
387<item key="custom" type="file">
388<data content_type="image/gif" filename="ico_BulletinBoard.gif" type="file">47494638396112001000e60000c58f0dfcfef8040204fcc8546c6e6cfcfed5fcfdbbfcd765fcfc96848284fce56dfcee84fcfa7fc80000d1c6b572736fc6ac7fc7a04ff5dbdb766a69c352539b78547a5325c63333cf9e3c7f4521af9276cd6363958978c455549b0e00dfb668fcf8f8a40000a10606856b4e958d85885e33937758d79d7aac0000f9ca65a07d5abc7b3ad00000821900c60b0b9c4645faf8f6b10000be0000712802845e3aaf1210cc0000c03d3fe5c2c2f7d7796d390af9f6f4b57576a39190a70000deafaf7d4e25c7736a868183a30101ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021f90401000044002c00000000120010000007a480440083848585448882018b8b058c8c000989000595969795000493069d029fa09d069a9c08028f8b020808a48800a6a99f8c020cad820ba7a8a9b59baeb8b10123191d142718bd820a0ab98b0e3a3e3222413d20ae07a0a024161e362843171b3f820207e5e639262d0d31212c2e388203f2f30329103335372f3c12aef4f41f80ac982024912043842294e020c920910404224a24f080860a180e331ad4506187c140003b</data></item>
389<item key="default"></item>
390<item key="id"><![CDATA[icon]]></item>
391<item key="keys" type="list"><list>
392</list>
393</item>
394<item key="mandatory" type="int">0</item>
395<item key="multilang" type="int">0</item>
396<item key="name"><![CDATA[Icon]]></item>
397<item key="repetitive" type="int">0</item>
398<item key="type"><![CDATA[resource]]></item>
399</dictionary>
400</item>
401<item type="dictionary"><dictionary>
402<item key="custom" type="file">
403<data content_type="image/gif" filename="ico_BulletinBoard_disabled.gif" type="file">47494638396112001000e60000989898fdfdfd0303036d6d6dd0d0d0fbfbfbf9f9f9999999cfcfcffcfcfcdadadafefefef7f7f7040404828282f5f5f5ececec6464648a8a8ae4e4e4676767fafafa565656dbdbdb6c6c6c515151a7a7a78e8e8ee5e5e5d9d9d9afafaf8787876e6e6ef8f8f8797979484848666666585858535353bcbcbc5252528383835f5f5f4343434f4f4f959595cacacabababa7e7e7e4545455a5a5a777777d1d1d18b8b8bc6c6c6696969ababab7b7b7b5c5c5c8888887272726565658181815959596f6f6fffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021f90401000041002c00000000120010000007ab80410083848585418882018b8b058c8c000e89008e090595980500039306151502a1a29e069b9d0c028f0b0b020c0ca68800a88ba28c020fb08210a9aab4b89cb1bbb4a940162233381ac0821c13bc8b3623262a19352d06b117a2a21b3a2c241619181f2f820d0ae817e81d3931112528373d2e820804f7f8341e2b3f18113b1362d9cb77ef840c09207c241264e8c0200d1424485a18c4c1808b1807f0a0902204c58f0b01c060b03010003b</data></item>
404<item key="default"></item>
405<item key="id"><![CDATA[icon_disabled]]></item>
406<item key="keys" type="list"><list>
407</list>
408</item>
409<item key="mandatory" type="int">0</item>
410<item key="multilang" type="int">0</item>
411<item key="name"><![CDATA[Icon: Disabled]]></item>
412<item key="repetitive" type="int">0</item>
413<item key="type"><![CDATA[resource]]></item>
414</dictionary>
415</item>
416<item type="dictionary"><dictionary>
417<item key="custom"></item>
418<item key="default"></item>
419<item key="id"><![CDATA[titlealt]]></item>
420<item key="keys" type="list"><list>
421</list>
422</item>
423<item key="mandatory" type="int">1</item>
424<item key="multilang" type="int">1</item>
425<item key="name"><![CDATA[Kurztitel]]></item>
426<item key="repetitive" type="int">0</item>
427<item key="type"><![CDATA[string]]></item>
428</dictionary>
429</item>
430<item type="dictionary"><dictionary>
431<item key="custom"></item>
432<item key="default"></item>
433<item key="id"><![CDATA[title]]></item>
434<item key="keys" type="list"><list>
435</list>
436</item>
437<item key="mandatory" type="int">1</item>
438<item key="multilang" type="int">1</item>
439<item key="name"><![CDATA[Titel]]></item>
440<item key="repetitive" type="int">0</item>
441<item key="type"><![CDATA[string]]></item>
442</dictionary>
443</item>
444<item type="dictionary"><dictionary>
445<item key="custom"></item>
446<item key="default"></item>
447<item key="id"><![CDATA[bbAdmin]]></item>
448<item key="keys" type="list"><list>
449</list>
450</item>
451<item key="mandatory" type="int">1</item>
452<item key="multilang" type="int">0</item>
453<item key="name"><![CDATA[Administrator (eMail)]]></item>
454<item key="repetitive" type="int">0</item>
455<item key="type"><![CDATA[string]]></item>
456</dictionary>
457</item>
458<item type="dictionary"><dictionary>
459<item key="custom"></item>
460<item key="default"></item>
461<item key="id"><![CDATA[bbMessages]]></item>
462<item key="keys" type="list"><list>
463</list>
464</item>
465<item key="mandatory" type="int">1</item>
466<item key="multilang" type="int">0</item>
467<item key="name"><![CDATA[Messages]]></item>
468<item key="repetitive" type="int">0</item>
469<item key="type"><![CDATA[BulletinBoardMessages]]></item>
470</dictionary>
471</item>
472<item type="dictionary"><dictionary>
473<item key="custom"></item>
474<item key="default"></item>
475<item key="id"><![CDATA[bbNotifications]]></item>
476<item key="keys" type="list"><list>
477</list>
478</item>
479<item key="mandatory" type="int">1</item>
480<item key="multilang" type="int">0</item>
481<item key="name"><![CDATA[Notifications]]></item>
482<item key="repetitive" type="int">0</item>
483<item key="type"><![CDATA[BulletinBoardNotifications]]></item>
484</dictionary>
485</item>
486<item type="dictionary"><dictionary>
487<item key="custom"></item>
488<item key="default"></item>
489<item key="id"><![CDATA[bbRatings]]></item>
490<item key="keys" type="list"><list>
491</list>
492</item>
493<item key="mandatory" type="int">1</item>
494<item key="multilang" type="int">0</item>
495<item key="name"><![CDATA[Ratings]]></item>
496<item key="repetitive" type="int">0</item>
497<item key="type"><![CDATA[BulletinBoardRatings]]></item>
498</dictionary>
499</item>
500<item type="dictionary"><dictionary>
501<item key="custom" type="file">
502<data content_type="image/gif" filename="mail_icon.gif" type="file">47494638396110001000f700004e4e4e64a1e5ee3720f0442ff2614fa3a3a382b3ea8dbdf0b1d0f2b6d3f3b9d5f3bdd7f4bed8f4c2daf5c5dcf5c9def6cadff6d0e3f7d1e3f7d6e6f8dae9f9dceaf9ddeaf9dfecfae1edfae4eefae8f1fbe9f2fbebf3fcedf4fcf0f6fcf2f7fdf5f9fdf9fbfefcfdfefefeffed1717ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021f90401000024002c00000000100010000008730049081c48b0a0c1830813122cc0b0a1c386000416284191a208101d3254887020228989154784f0a0e10281011d2596086020804b0e18260c1090f263c58b19294470b0a0e644962e0d5890f08041029f25447ed870610284060a10f83c40b5aa55aa1e0b00d8cab52b578560c38a1d5b3020003b</data></item>
503<item key="default"></item>
504<item key="id"><![CDATA[mail_link]]></item>
505<item key="keys" type="list"><list>
506</list>
507</item>
508<item key="mandatory" type="int">0</item>
509<item key="multilang" type="int">0</item>
510<item key="name"><![CDATA[Mail-Link]]></item>
511<item key="repetitive" type="int">0</item>
512<item key="type"><![CDATA[resource]]></item>
513</dictionary>
514</item>
515<item type="dictionary"><dictionary>
516<item key="custom" type="file">
517<data content_type="image/gif" filename="klammer.gif" type="file">4749463839610e00100091ff00c0c0c0bbbbbb00000000000021f90401000000002c000000000e001000000228846fa2c820015f730189266faa2773da5552b881243896e8679eaadbbef19b5a5ccd283803b14d01003b</data></item>
518<item key="default"></item>
519<item key="id"><![CDATA[mail_appendix]]></item>
520<item key="keys" type="list"><list>
521</list>
522</item>
523<item key="mandatory" type="int">0</item>
524<item key="multilang" type="int">0</item>
525<item key="name"><![CDATA[Mail-Appendix]]></item>
526<item key="repetitive" type="int">0</item>
527<item key="type"><![CDATA[resource]]></item>
528</dictionary>
529</item>
530<item type="dictionary"><dictionary>
531<item key="custom" type="file">
532<data content_type="image/gif" filename="up.gif" type="file">47494638396111000f00b30c00d5d5d57c7c7cc0c0c0a2a2a27e7e7ebebebebfbfbf7d7d7dd6d6d6d7d7d72a2a2affffff00000000000000000000000021f9040100000c002c0000000011000f0000046390c9496b0de704622b59e032289d74108496ae5946324728cfcbfb210ba0e03c9218afd802a1282686894421f10a0c8b5080cf073481708a6402215016828b23132135280555d895082d16cc60add98078d3bfd604807e172c0b44126d838425860c11003b</data></item>
533<item key="default"></item>
534<item key="id"><![CDATA[thread_up]]></item>
535<item key="keys" type="list"><list>
536</list>
537</item>
538<item key="mandatory" type="int">0</item>
539<item key="multilang" type="int">0</item>
540<item key="name"><![CDATA[Thread-Up]]></item>
541<item key="repetitive" type="int">0</item>
542<item key="type"><![CDATA[resource]]></item>
543</dictionary>
544</item>
545<item type="dictionary"><dictionary>
546<item key="custom"><![CDATA[<!-- // BO initReq // -->
547
548<dtml-call "REQUEST.set('actionId','ACTION%s'%meta_id)">
549
550<!-- // EO initReq // -->]]></item>
551<item key="default"></item>
552<item key="id"><![CDATA[initReq]]></item>
553<item key="keys" type="list"><list>
554</list>
555</item>
556<item key="mandatory" type="int">0</item>
557<item key="multilang" type="int">0</item>
558<item key="name"><![CDATA[Init request]]></item>
559<item key="repetitive" type="int">0</item>
560<item key="type"><![CDATA[method]]></item>
561</dictionary>
562</item>
563<item type="dictionary"><dictionary>
564<item key="custom"><![CDATA[<!-- // BO displayTabs // -->
565
566<dtml-let tabs="[
567    'displayOverview',getLangStr('bbOverview',lang),
568    'insertNew',getLangStr('bbNewTopic',lang),
569    'displaySearch',getLangStr('bbSearch',lang),
570    'displayNew',getLangStr('bbWhatsNew',lang),
571    'displayHelp','?',
572    ]">
573
574    <dtml-comment>
575    <!-- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
576         +-+-  Select TabSheet
577         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- -->
578    </dtml-comment>
579   
580    <dtml-if "REQUEST.form.has_key('newTabSheet')">
581        <dtml-call "SESSION.set('sessTabSheet',REQUEST.form.get('newTabSheet'))">
582    <dtml-else>
583        <dtml-call "SESSION.set('sessTabSheet',SESSION.get('sessTabSheet',tabs[0]))">
584    </dtml-if>
585    <dtml-call "REQUEST.set('tabSheet',SESSION.get('sessTabSheet'))">
586   
587    <dtml-comment>
588    <!-- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
589         +-+-  Select TabSheet Form
590         +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- -->
591    </dtml-comment>
592   
593    <table cellspacing="0" cellpadding="0" border="0">
594    <tr valign="top">
595        <td align="left">
596            <dtml-in "_.range(len(tabs)/2)">
597                <dtml-let i=sequence-item action="tabs[i*2]" title="tabs[i*2+1]">
598                    <div style="float:left; padding-left:4px; padding-top:2px; padding-right:4px; padding-bottom:2px; border-top:1px solid #C8DBE2; border-left:1px solid #C8DBE2; border-right:1px solid silver; margin-left:2px; margin-right:2px; background-color:<dtml-if "action==tabSheet">#C8DBE2<dtml-else>white</dtml-if>;">
599                        <a href="<dtml-var "url_append_params(URL,{'newTabSheet':action,'boardId':'%s_%s'%(id,aq_parent.id)})">" style="text-decoration:none;"><dtml-var title></a>
600                    </div>
601                </dtml-let>
602            </dtml-in>
603        <td>
604    </tr>
605    </table>
606
607</dtml-let>
608
609<!-- // EO displayTabs // -->]]></item>
610<item key="default"></item>
611<item key="id"><![CDATA[displayTabs]]></item>
612<item key="keys" type="list"><list>
613</list>
614</item>
615<item key="mandatory" type="int">0</item>
616<item key="multilang" type="int">0</item>
617<item key="name"><![CDATA[Display tabulators]]></item>
618<item key="repetitive" type="int">0</item>
619<item key="type"><![CDATA[method]]></item>
620</dictionary>
621</item>
622<item type="dictionary"><dictionary>
623<item key="custom"><![CDATA[<!-- // BO displayOverview // -->
624
625<dtml-if "REQUEST.get('boardId','')=='%s_%s'%(id,aq_parent.id) and REQUEST.form.has_key('bbmId')">
626    <dtml-var "getObjProperty('displayMessage',REQUEST)">
627<dtml-else>
628    <table cellspacing="1" cellpadding="1" border="0" style="background-color: #C8DBE2;">
629    <tr align="center" valign="top" style="background-color: #C8DBE2;">
630        <td><strong><dtml-var "getLangStr('bbTopic',lang)"></strong></td>
631        <td><strong><dtml-var "getLangStr('bbAuthor',lang)"></strong></td>
632        <td><strong><dtml-var "getLangStr('bbMessages',lang)"></strong></td>
633        <td><strong><dtml-var "getLangStr('bbCreated',lang)"></strong></td>
634        <td><strong><dtml-var "getLangStr('bbLast',lang)"></strong></td>
635    </tr>
636    <dtml-try>
637        <dtml-call "REQUEST.set('res',bbMessages.getObjProperty('records',REQUEST))">
638    <dtml-except>
639        <dtml-call "REQUEST.set('res',{})">
640    </dtml-try>
641    <dtml-in "filter_list(res,'bbmBbmId','','==')" mapping>
642        <dtml-let children="sort_list(tree_list(res,'bbmId','bbmBbmId',bbmId,1),'bbmDateTime','desc')">
643            <tr align="left" valign="top" class="<dtml-if sequence-even>neutralColorWhite<dtml-else>neutralColorWhite</dtml-if>">
644                <td><a href="<dtml-var "url_append_params(URL,{'newTabSheet':'displayOverview','boardId':'%s_%s'%(id,aq_parent.id),'bbmId':bbmId})">"><dtml-var bbmSubject></a></td>
645                <td><dtml-var bbmAuthor></td>
646                <td align="center"><dtml-if children><dtml-var "len(children)"><dtml-else>0</dtml-if></td>
647                <td align="center"><dtml-var "getLangFmtDate(bbmDateTime,lang,'DATE_FMT')"></td>
648                <td align="center"><dtml-if children><dtml-var "getLangFmtDate(children[0]['bbmDateTime'],lang,'DATE_FMT')"><dtml-else>&nbsp;</dtml-if></td>
649            </tr>
650        </dtml-let>
651    </dtml-in>
652    </table>
653</dtml-if>
654
655<!-- // EO displayOverview // -->]]></item>
656<item key="default"></item>
657<item key="id"><![CDATA[displayOverview]]></item>
658<item key="keys" type="list"><list>
659</list>
660</item>
661<item key="mandatory" type="int">0</item>
662<item key="multilang" type="int">0</item>
663<item key="name"><![CDATA[Display overview]]></item>
664<item key="repetitive" type="int">0</item>
665<item key="type"><![CDATA[method]]></item>
666</dictionary>
667</item>
668<item type="dictionary"><dictionary>
669<item key="custom"><![CDATA[<!-- // BO displaySearch // -->
670
671<dtml-try>
672    <dtml-call "REQUEST.set('resMsg',bbMessages.getObjProperty('records',REQUEST))">
673<dtml-except>
674    <dtml-call "REQUEST.set('resMsg',{})">
675</dtml-try>
676
677<form method="get">
678    <input type="hidden" name="boardId" value="<dtml-var "'%s_%s'%(id,aq_parent.id)">">
679    <table border="0" cellspacing="5" cellpadding="0">
680    <tr valign="middle">
681        <td><dtml-var "getLangStr('bbSearchterm',lang)"></td>
682        <td><input type="text" name="searchterm" value="<dtml-var "REQUEST.form.get('searchterm','')">" size="30"></td>
683        <td><input type="submit" name="btn" value="<dtml-var "getLangStr('bbSearch',lang)">"></td>
684    </tr>
685    </table>
686</form>
687
688<dtml-if "REQUEST.form.has_key('searchterm')">
689    <hr size="1" />
690    <table cellspacing="1" cellpadding="1" border="0" style="background-color: #C8DBE2;">
691    <tr align="center" valign="top" style="background-color: #C8DBE2;">
692        <td><strong><dtml-var "getLangStr('bbSubject',lang)"></strong></td>
693        <td><strong><dtml-var "getLangStr('bbAuthor',lang)"></strong></td>
694        <td><strong><dtml-var "getLangStr('bbCreated',lang)"></strong></td>
695    </tr>
696    <dtml-call "REQUEST.set('res',filter_list(resMsg,None,REQUEST.form.get('searchterm'),'%'))">
697    <dtml-in res size=15 start=qs mapping>
698        <tr align="left" valign="top" class="<dtml-if sequence-even>neutralColorWhite<dtml-else>neutralColorWhite</dtml-if>">
699            <td>
700           
701            <a href="<dtml-var "url_append_params(URL,{'newTabSheet':'displayOverview','boardId':'%s_%s'%(id,aq_parent.id),'bbmId':bbmId})">"><dtml-var bbmSubject></a>
702            <dtml-if bbmFile>
703            <img src="<dtml-var "getObjProperty('mail_appendix',REQUEST).getHref(REQUEST)">" alt="" border="0" align="absmiddle" />
704            </dtml-if>
705           
706            </td>
707            <td><dtml-var bbmAuthor></td>
708            <td><dtml-var "getLangFmtDate(bbmDateTime,lang,'DATETIME_FMT')"></td>
709        </tr>
710    </dtml-in>
711    <tr align="left" valign="top" style="background-color: #C8DBE2;">
712        <td colspan="3">
713            <table cellspacing="0" cellpadding="0" border="0">
714            <tr>
715                <td>
716                    <strong>
717                    <dtml-in res size=15 start=qs>
718                        <dtml-if sequence-start><dtml-var "_['sequence-index']+1"></dtml-if>
719                        <dtml-if sequence-end>- <dtml-var "_['sequence-index']+1"></dtml-if>
720                    </dtml-in>
721                    <dtml-var "getLangStr('bbOf',lang)"> <dtml-var "len(res)">
722                    </strong>
723                </td>
724                <td colspan="2" align="right">&nbsp;                   
725                    <dtml-in res previous size=10 start=qs>
726                        <a href="<dtml-var "url_append_params(URL,{'boardId':'%s_%s'%(id,aq_parent.id)})">&qs=<dtml-var previous-sequence-start-number>&searchterm=<dtml-var searchterm url_quote>&boardId=<dtml-var "'%s_%s'%(id,aq_parent.id)">">&laquo; <dtml-var "getZMILangStr('ATTR_PREVIOUS')"> <dtml-var previous-sequence-size></a>
727                    </dtml-in>
728                    <dtml-in res next size=10 start=qs>
729                        <a href="<dtml-var "url_append_params(URL,{'boardId':'%s_%s'%(id,aq_parent.id)})">&qs=<dtml-var next-sequence-start-number>&searchterm=<dtml-var searchterm url_quote>&boardId=<dtml-var "'%s_%s'%(id,aq_parent.id)">"><dtml-var "getZMILangStr('ATTR_NEXT')"> <dtml-var next-sequence-size> &raquo;</a>
730                    </dtml-in>
731                   
732                </td>
733            </tr>
734            </table>
735        </td>
736    </tr>
737    </table>
738<dtml-else>
739    <br/><br/><br/><br/><br/><br/>
740</dtml-if>
741
742<!-- // EO displaySearch // -->]]></item>
743<item key="default"></item>
744<item key="id"><![CDATA[displaySearch]]></item>
745<item key="keys" type="list"><list>
746</list>
747</item>
748<item key="mandatory" type="int">0</item>
749<item key="multilang" type="int">0</item>
750<item key="name"><![CDATA[Display search]]></item>
751<item key="repetitive" type="int">0</item>
752<item key="type"><![CDATA[method]]></item>
753</dictionary>
754</item>
755<item type="dictionary"><dictionary>
756<item key="custom"><![CDATA[<!-- // BO displayNew // -->
757
758<dtml-try>
759    <dtml-call "REQUEST.set('resMsg',bbMessages.getObjProperty('records',REQUEST))">
760<dtml-except>
761    <dtml-call "REQUEST.set('resMsg',{})">
762</dtml-try>
763
764<table width="90%" cellspacing="1" cellpadding="1" border="0" style="background-color: #C8DBE2;">
765<tr align="center" valign="top" style="background-color: #C8DBE2;">
766    <td><strong><dtml-var "getLangStr('bbSubject',lang)"></strong></td>
767    <td><strong><dtml-var "getLangStr('bbAuthor',lang)"></strong></td>
768    <td><strong><dtml-var "getLangStr('bbCreated',lang)"></strong></td>
769</tr>
770<dtml-call "REQUEST.set('res',sort_list(resMsg,'bbmDateTime','desc'))">
771<dtml-in res size=20 start=qs mapping>
772    <tr align="left" valign="top" class="<dtml-if sequence-even>neutralColorWhite<dtml-else>neutralColorWhite</dtml-if>">
773        <td>
774            <a href="<dtml-var "url_append_params(URL,{'newTabSheet':'displayOverview','boardId':'%s_%s'%(id,aq_parent.id),'bbmId':bbmId})">"><dtml-var bbmSubject></a>
775            <dtml-if bbmFile>
776            <img src="<dtml-var "getObjProperty('mail_appendix',REQUEST).getHref(REQUEST)">" alt="" border="0" align="absmiddle" />
777            </dtml-if>
778        </td>
779        <td><dtml-var bbmAuthor></td>
780        <td><dtml-var "getLangFmtDate(bbmDateTime,lang,'DATETIME_FMT')"></td>
781    </tr>
782</dtml-in>
783<tr align="left" valign="top" style="background-color: #C8DBE2;">
784    <td colspan="3">
785        <table cellspacing="0" cellpadding="0" border="0">
786        <tr>
787            <td>
788                <strong>
789                <dtml-in res size=20 start=qs>
790                    <dtml-if sequence-start><dtml-var "_['sequence-index']+1"></dtml-if>
791                    <dtml-if sequence-end>- <dtml-var "_['sequence-index']+1"></dtml-if>
792                </dtml-in>
793                <dtml-var "getLangStr('bbOf',lang)"> <dtml-var "len(res)">
794                </strong>
795            </td>
796            <td colspan="2" align="right">&nbsp;
797                <dtml-in res previous size=10 start=qs>
798                    <a href="<dtml-var "url_append_params(URL,{'boardId':'%s_%s'%(id,aq_parent.id)})">&qs=<dtml-var previous-sequence-start-number> ">&laquo; <dtml-var "getZMILangStr('ATTR_PREVIOUS')"> <dtml-var previous-sequence-size></a>
799                </dtml-in>
800                <dtml-in res next size=10 start=qs>
801                    <a href="<dtml-var "url_append_params(URL,{'boardId':'%s_%s'%(id,aq_parent.id)})">&qs=<dtml-var next-sequence-start-number> "><dtml-var "getZMILangStr('ATTR_NEXT')"> <dtml-var next-sequence-size> &raquo;</a>
802                </dtml-in>
803            </td>
804        </tr>
805        </table>
806    </td>
807</tr>
808</table>
809
810<!-- // EO displayNew // -->]]></item>
811<item key="default"></item>
812<item key="id"><![CDATA[displayNew]]></item>
813<item key="keys" type="list"><list>
814</list>
815</item>
816<item key="mandatory" type="int">0</item>
817<item key="multilang" type="int">0</item>
818<item key="name"><![CDATA[Display new]]></item>
819<item key="repetitive" type="int">0</item>
820<item key="type"><![CDATA[method]]></item>
821</dictionary>
822</item>
823<item type="dictionary"><dictionary>
824<item key="custom"><![CDATA[<!-- // BO displayHelp // -->
825
826<dtml-if "lang=='ger'">
827    <h2>Anleitung: Beitrag schreiben</h2>
828    <ul style="bullet">
829        <li>Geben Sie Name, eMail-Adresse und den Titel des Beitrags ein.</li>
830        <li>Schreiben Sie den Beitragstext in das große Feld.</li>
831        <!-- <li>Klicken Sie den "Vorschau..."-Button fÃŒr eine Test-Ansicht.</li> -->
832        <li>Klicken Sie den "Absenden"-Button um den Beitrag zu ÃŒbermitteln.</li>
833    </ul>
834    <h2>Anleitung: Beitrag lesen</h2>
835    <ul style="bullet">
836        <li><strong>Neu</strong> ist eine nach Datum sortierte Liste der aktuellsten BeitrÀge.</li>
837        <li>Klicken Sie auf den Titel eines Beitrags.</li>
838        <!-- <li><strong>NT</strong> bedeutet leerer Beitrag ("No Text").</li> -->
839        <li>Benutzen Sie <img src="<dtml-var "getObjProperty('mail_link',REQUEST).getHref(REQUEST)">" alt="" border="0" align="absmiddle"> um dem Autor eine persönliche eMail zu senden.</li>
840    </ul>
841<dtml-else>
842    <h2>Instruction: How to write a message</h2>
843    <ul style="bullet">
844        <li>Please enter your name, e-mail adress and the title of your message.</li>
845        <li>Enter the message text in the big area.</li>
846        <!-- <li>Click the "Preview..."-Button for a test.</li> -->
847        <li>Click "Send" to transfer the message.</li>
848    </ul>
849    <h2>Instruction: How to read a message</h2>
850    <ul style="bullet">
851        <li><strong>What's new</strong> means a list of recent messages sorted according to dates.</li>
852        <li>Please click on a messageÂŽs title.</li>
853        <!-- <li><strong>NT</strong> means empty message ("No Text").</li> -->
854        <li>Use <img src="<dtml-var "getObjProperty('mail_link',REQUEST).getHref(REQUEST)">" alt="" border="0" align="absmiddle"> to send a personal mail to the author.</li>
855    </ul>
856</dtml-if>
857
858<!-- // EO displayHelp // -->]]></item>
859<item key="default"></item>
860<item key="id"><![CDATA[displayHelp]]></item>
861<item key="keys" type="list"><list>
862</list>
863</item>
864<item key="mandatory" type="int">0</item>
865<item key="multilang" type="int">0</item>
866<item key="name"><![CDATA[Display help]]></item>
867<item key="repetitive" type="int">0</item>
868<item key="type"><![CDATA[method]]></item>
869</dictionary>
870</item>
871<item type="dictionary"><dictionary>
872<item key="custom"><![CDATA[<!-- // BO displayMessage // -->
873
874<dtml-try>
875    <dtml-call "REQUEST.set('resMsg',bbMessages.getObjProperty('records',REQUEST))">
876    <dtml-call "REQUEST.set('resNtf',bbNotifications.getObjProperty('records',REQUEST))">
877    <dtml-call "REQUEST.set('resRtg',bbRatings.getObjProperty('records',REQUEST))">
878<dtml-except>
879    <dtml-call "REQUEST.set('resMsg',{})">
880    <dtml-call "REQUEST.set('resNtf',{})">
881    <dtml-call "REQUEST.set('resRtg',{})">
882</dtml-try>
883
884<dtml-comment>
885<!-- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
886     +-+-  Insert Message if button "Send" is pressed
887     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- -->
888</dtml-comment>
889<dtml-if "REQUEST.get('boardId','') == '%s_%s'%(id,aq_parent.id) and REQUEST.get('btn','')==getLangStr('bbBtnSend',lang)">
890
891    <dtml-with bbMessages>
892        <dtml-call "REQUEST.set('newRow',{
893            'bbmId': getNewId(),
894            'bbmSubject': REQUEST.get('newBbmSubject').strip(),
895            'bbmAuthor': REQUEST.get('newBbmAuthor').strip(),
896            'bbmEmail': REQUEST.get('newBbmEmail').strip(),
897            'bbmDateTime':parseLangFmtDate(getLangFmtDate(ZopeTime(),lang),lang),
898            'bbmBody': REQUEST.get('newBbmBody').strip(),
899            'bbmFile': formatObjAttrValue(getObjAttr('bbmFile'),REQUEST.form.get('newBbmFile',None),lang),     
900            'bbmBbmId': REQUEST.get('newBbmBbmId'),
901            })">
902        <dtml-call "resMsg.append(newRow)">
903        <dtml-call "setObjStateModified(REQUEST)">
904        <dtml-call "setObjProperty('records',resMsg,lang)">
905        <dtml-call "onChangeObj(REQUEST,forced=1)">
906    </dtml-with>
907   
908    <dtml-call "REQUEST.set('bbmId',newRow['bbmId'])">
909   
910    <dtml-let expires="(_.DateTime() + 365).toZone('GMT').rfc822()">
911        <dtml-call "RESPONSE.setCookie('__ac_author',newRow['bbmAuthor'],path='/',expires=expires)">
912        <dtml-call "RESPONSE.setCookie('__ac_email',newRow['bbmEmail'],path='/',expires=expires)">
913    </dtml-let>
914   
915    <div style="color:maroon; background-color: white; border: solid 1px black; padding: 4px;">
916        <dtml-try>
917        <dtml-var "getLangStr('bbMsgMessageInsertOk',lang)%getLangFmtDate(ZopeTime(),lang)">
918        <dtml-except>
919        </dtml-try>
920    </div>
921 
922    <dtml-comment>
923    <!-- ##### Insert notification if checkbox is checked ##### -->
924    </dtml-comment> 
925    <dtml-if "REQUEST.has_key('newBbnEmailNtf') and int(REQUEST.get('newBbnEmailNtf'))==1">
926        <div style="color:maroon; background-color: white; border: solid 1px black; padding: 4px;">
927            <dtml-var "getObjProperty('insertNotification',REQUEST)">
928        </div>
929    </dtml-if>
930   
931    <dtml-comment>
932    <!-- ##### Send notification ##### -->
933    </dtml-comment>
934    <div style="color:maroon; background-color: white; border: solid 1px black; padding: 4px;">
935        <dtml-var "getObjProperty('sendNotification',REQUEST)">
936    </div>
937
938<dtml-comment>    
939<!-- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
940     +-+-  Insert Notification if button "Notify" is pressed
941     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- -->
942</dtml-comment>
943<dtml-elif "REQUEST.get('boardId','') == '%s_%s'%(id,aq_parent.id) and REQUEST.get('btn','')==getLangStr('bbBtnNotify',lang)">
944
945    <div style="color:maroon; background-color: white; border: solid 1px black; padding: 4px;">
946        <dtml-var "getObjProperty('insertNotification',REQUEST)">
947    </div>
948
949<dtml-comment>
950<!-- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
951     +-+-  Insert Rating if button "Rate" is pressed
952     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- -->
953</dtml-comment>
954<dtml-elif "REQUEST.get('boardId','') == '%s_%s'%(id,aq_parent.id) and REQUEST.get('btn','')==getLangStr('bbBtnRate',lang)">
955
956    <div style="color:maroon; background-color: white; border: solid 1px black; padding: 4px;">
957        <dtml-var "getObjProperty('insertRating',REQUEST)">
958    </div>
959
960</dtml-if>
961
962
963<dtml-in "sort_list(filter_list(resMsg,'bbmId',REQUEST.get('bbmId',''),'=='),'bbmDateTime','asc')" mapping>
964
965<table width="95%" cellspacing="2" cellpadding="1" border="0">
966<dtml-comment>
967<!-- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
968     +-+-  Display Message-Header with rating
969     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- -->
970</dtml-comment>   
971<tr>
972    <td class="neutralColorWhite">
973        <dtml-let thread_up="getObjProperty('thread_up',REQUEST)">
974            <dtml-in "tree_parents(resMsg,'bbmId','bbmBbmId',bbmBbmId,1)" mapping>
975                <dtml-if sequence-end>
976                    <a href="<dtml-var "url_append_params(URL,{'newTabSheet':'displayOverview','boardId':'%s_%s'%(id,aq_parent.id),'bbmId':bbmId})">"><img src="<dtml-var "thread_up.getHref(REQUEST)">" alt="" border="0" align="absmiddle" hspace="4" /></a><a href="<dtml-var "url_append_params(URL,{'newTabSheet':'displayOverview','boardId':'%s_%s'%(id,aq_parent.id),'bbmId':bbmId})">"><strong><small><dtml-var bbmSubject></small></strong></a>
977                    <br />
978                </dtml-if>
979            </dtml-in>
980        </dtml-let>
981       
982        <dtml-comment>
983        <!-- ##### Calculate rating ##### -->
984        </dtml-comment>
985        <dtml-call "REQUEST.set('calcSum',0)">
986        <dtml-call "REQUEST.set('calcLen',0)">
987        <dtml-in "sort_list(filter_list(resRtg,'bbrMsg',REQUEST.get('bbmId'),'=='),'bbrDateTime','asc')" mapping>
988            <dtml-call "REQUEST.set('calcSum',calcSum+int(bbrRate))">
989            <dtml-call "REQUEST.set('calcLen',_['sequence-length'])">
990        </dtml-in>
991   
992        <div style="margin-left:6px;">
993            <strong><dtml-var bbmSubject></strong>
994            <dtml-if "calcLen>0">
995                <dtml-let
996                    stars05="bbRatings.getObjProperty('stars-0-5',REQUEST)"
997                    stars10="bbRatings.getObjProperty('stars-1-0',REQUEST)"
998                    stars15="bbRatings.getObjProperty('stars-1-5',REQUEST)"
999                    stars20="bbRatings.getObjProperty('stars-2-0',REQUEST)"
1000                    stars25="bbRatings.getObjProperty('stars-2-5',REQUEST)"
1001                    stars30="bbRatings.getObjProperty('stars-3-0',REQUEST)"
1002                    stars35="bbRatings.getObjProperty('stars-3-5',REQUEST)"
1003                    stars40="bbRatings.getObjProperty('stars-4-0',REQUEST)"
1004                    stars45="bbRatings.getObjProperty('stars-4-5',REQUEST)"
1005                    stars50="bbRatings.getObjProperty('stars-5-0',REQUEST)"
1006                    calcRate="_.float(calcSum)/_.float(calcLen)">
1007               
1008                    <dtml-if "calcRate > 0 and calcRate < 1">
1009                        <img src="<dtml-var "stars05.getHref(REQUEST)">" alt="<dtml-var "'%1.1f'%(calcRate)">" border="0" align="middle" />
1010                    <dtml-elif  "calcRate >= 1 and calcRate < 1.5">
1011                        <img src="<dtml-var "stars10.getHref(REQUEST)">" alt="<dtml-var "'%1.1f'%(calcRate)">" border="0" align="middle" />
1012                    <dtml-elif  "calcRate >= 1.5 and calcRate < 2">
1013                        <img src="<dtml-var "stars15.getHref(REQUEST)">" alt="<dtml-var "'%1.1f'%(calcRate)">" border="0" align="middle" />   
1014                    <dtml-elif  "calcRate >= 2 and calcRate < 2.5">
1015                        <img src="<dtml-var "stars20.getHref(REQUEST)">" alt="<dtml-var "'%1.1f'%(calcRate)">" border="0" align="middle" />   
1016                    <dtml-elif  "calcRate >= 2.5 and calcRate < 3">
1017                        <img src="<dtml-var "stars25.getHref(REQUEST)">" alt="<dtml-var "'%1.1f'%(calcRate)">" border="0" align="middle" />
1018                    <dtml-elif  "calcRate >= 3 and calcRate < 3.5">
1019                        <img src="<dtml-var "stars30.getHref(REQUEST)">" alt="<dtml-var "'%1.1f'%(calcRate)">" border="0" align="middle" />
1020                    <dtml-elif  "calcRate >= 3.5 and calcRate < 4">
1021                        <img src="<dtml-var "stars35.getHref(REQUEST)">" alt="<dtml-var "'%1.1f'%(calcRate)">" border="0" align="middle" />
1022                    <dtml-elif  "calcRate >= 4 and calcRate < 4.5">
1023                        <img src="<dtml-var "stars40.getHref(REQUEST)">" alt="<dtml-var "'%1.1f'%(calcRate)">" border="0" align="middle" />
1024                    <dtml-elif  "calcRate >= 4.5 and calcRate < 5">
1025                        <img src="<dtml-var "stars45.getHref(REQUEST)">" alt="<dtml-var "'%1.1f'%(calcRate)">" border="0" align="middle" />
1026                    <dtml-elif  "calcRate >= 5">
1027                        <img src="<dtml-var "stars50.getHref(REQUEST)">" alt="<dtml-var "'%1.1f'%(calcRate)">" border="0" align="middle" />
1028                    </dtml-if>
1029                    (<dtml-var calcLen> <dtml-var "getLangStr('bbVotes',lang)">)
1030                </dtml-let>
1031            </dtml-if>
1032            <br />
1033            <dtml-var bbmAuthor> <dtml-if bbmEmail><a href="mailto:<dtml-var bbmEmail>"><img src="<dtml-var "getObjProperty('mail_link',REQUEST).getHref(REQUEST)">" alt="" border="0" align="absmiddle" /></a></dtml-if> <dtml-var "getLangFmtDate(bbmDateTime,lang,'DATETIME_FMT')">
1034        </div>
1035   
1036        <table cellspacing="0" cellpadding="0" border="0">
1037        <dtml-in "tree_list(resMsg,'bbmId','bbmBbmId',bbmId,0)" mapping>
1038            <dtml-let subchildren="tree_list(resMsg,'bbmId','bbmBbmId',bbmId,0)">
1039                <tr valign="bottom">
1040                    <dtml-if sequence-end>
1041                        <dtml-if subchildren>
1042                            <td><a href="<dtml-var "url_append_params(URL,{'newTabSheet':'displayOverview','boardId':'%s_%s'%(id,aq_parent.id),'bbmId':bbmId})">"><img src="<dtml-var MISC_ZMS>pl.gif" alt="" border="0" align="absmiddle"></a></td>
1043                        <dtml-else>
1044                            <td></td>
1045                        </dtml-if>
1046                    <dtml-else>
1047                        <dtml-if subchildren>
1048                            <td><a href="<dtml-var "url_append_params(URL,{'newTabSheet':'displayOverview','boardId':'%s_%s'%(id,aq_parent.id),'bbmId':bbmId})">"><img src="<dtml-var MISC_ZMS>pl.gif" alt="" border="0" align="absmiddle"></a></td>
1049                        <dtml-else>
1050                            <td></td>
1051                        </dtml-if>
1052                    </dtml-if>
1053                    <td valign="top">&nbsp;<small><a href="<dtml-var "url_append_params(URL,{'newTabSheet':'displayOverview','boardId':'%s_%s'%(id,aq_parent.id),'bbmId':bbmId})">"><strong><dtml-var bbmSubject></strong></a> - <dtml-var bbmAuthor> <dtml-var "getLangFmtDate(bbmDateTime,lang,'DATETIME_FMT')"> <dtml-if bbmFile><img src="<dtml-var "getObjProperty('mail_appendix',REQUEST).getHref(REQUEST)">" alt="" border="0" align="absmiddle" /></small></dtml-if></td>
1054                </tr>
1055            </dtml-let>
1056        </dtml-in>
1057        </table>
1058    </td>
1059</tr>
1060<dtml-comment>
1061<!-- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
1062     +-+-  Display Message-Body
1063     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- -->
1064</dtml-comment>
1065<tr>
1066    <form method="get" enctype="multipart/form-data">
1067    <input type="hidden" name="boardId" value="<dtml-var "'%s_%s'%(id,aq_parent.id)">">
1068    <input type="hidden" name="bbmId" value="<dtml-var bbmId>">
1069    <input type="hidden" name="newTabSheet" value="displayReply">
1070    <td>
1071        <table width="100%" border="0" cellspacing="0" cellpadding="0">
1072        <tr>
1073            <td>
1074                <table width="100%" border="0" cellspacing="1" cellpadding="1" class="neutralColorWhite">
1075                <tr style="background-color: #C8DBE2;">
1076                    <td><strong>Reply to this message</strong></td>
1077                    <td align="right" style="width:83px;"><input type="submit" style="width:80px;font-size:11px;" name="btn" value="<dtml-var "getLangStr('bbBtnReply',lang)">"></td>               
1078                </tr>
1079                </table>           
1080            </td>
1081        </tr>
1082        <tr>
1083            <td>
1084                <table width="100%" border="0" cellspacing="0" cellpadding="3">
1085                <tr>
1086                    <td class="neutralColorWhite">
1087                        <dtml-comment>
1088                        <!-- ##### parse links in message-bodytext ##### -->
1089                        </dtml-comment>
1090                        <dtml-call "REQUEST.set('bbmBodyStr',_.str.replace(bbmBody,'\n',' #br# '))">
1091                        <dtml-call "REQUEST.set('bbmBodyStr',_.str.split(bbmBodyStr,' '))">
1092                        <dtml-call "REQUEST.set('bbmBodyNewStr','')">
1093                        <dtml-in bbmBodyStr>
1094                            <dtml-let str="_.str.replace(_['sequence-item'],'#br#','\n')">
1095                                <dtml-if "_.str.find(str,'http://')>=0">
1096                                    <dtml-call "REQUEST.set('bbmBodyNewStr',bbmBodyNewStr+' '+'<a href=\'%s\' target=\'_blank\'>%s</a>'%(str,str))">
1097                                <dtml-else>
1098                                    <dtml-call "REQUEST.set('bbmBodyNewStr',bbmBodyNewStr+' '+str)">
1099                                </dtml-if>
1100                            </dtml-let>
1101                        </dtml-in>
1102                       
1103                        <dtml-var bbmBodyNewStr newline_to_br>
1104                       
1105                        <dtml-if bbmFile>
1106                            <div class="neutralColorWhite" style="margin:2px;padding:2px;">
1107                                <img src="<dtml-var "getObjProperty('mail_appendix',REQUEST).getHref(REQUEST)">" alt="" border="0" align="absmiddle" />
1108                                <strong>File:</strong>
1109                                <dtml-with bbMessages>
1110                                    <dtml-let file="formatObjAttrValue(getObjAttr('bbmFile'),bbmFile,lang)">
1111                                        <a href="<dtml-var "file.getHref(REQUEST)">" target="_blank"><img src="<dtml-var "file.getMimeTypeIconSrc()">" alt="<dtml-var "file.getContentType()">" border="0" align="absmiddle" hspace="2" /><dtml-var "file.getFilename()"></a> (<dtml-var "file.getDataSizeStr()">)
1112                                    </dtml-let>
1113                                </dtml-with>
1114                            </div>
1115                        </dtml-if>
1116                    </td>
1117                </tr>
1118                </table>
1119            </td>
1120        </tr>
1121        </table>
1122    </td>
1123    </form>
1124</tr>
1125<dtml-comment>
1126<!-- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
1127     +-+-  Display Message-Rating
1128     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- -->
1129</dtml-comment>
1130<tr>
1131    <form method="post" enctype="multipart/form-data">
1132    <td>
1133        <input type="hidden" name="boardId" value="<dtml-var "'%s_%s'%(id,aq_parent.id)">">
1134        <input type="hidden" name="bbmId" value="<dtml-var bbmId>">
1135        <table width="100%" border="0" cellspacing="1" cellpadding="1" class="neutralColorWhite">
1136        <tr style="background-color: #C8DBE2;">
1137            <td><strong><dtml-var "getLangStr('bbRateUsefulness',lang)"></strong></td>
1138            <td align="right" style="width:83px;"><input type="submit" style="width:80px;font-size:11px;" name="btn" value="<dtml-var "getLangStr('bbBtnRate',lang)">"></td>
1139        </tr>
1140        <tr>
1141            <td colspan="2">
1142                <table border="0" cellspacing="1" cellpadding="1">
1143                <tr align="center">
1144                    <td></td>
1145                    <td>1</td>
1146                    <td>2</td>
1147                    <td>3</td>
1148                    <td>4</td>
1149                    <td>5</td>
1150                    <td></td>
1151                </tr>
1152                <tr align="center">
1153                    <td><strong><dtml-var "getLangStr('bbBeginning',lang)"></strong></td>
1154                    <td><input type="radio" name="newBbrRate" value="1" /></td>
1155                    <td><input type="radio" name="newBbrRate" value="2" /></td>
1156                    <td><input type="radio" name="newBbrRate" value="3" /></td>
1157                    <td><input type="radio" name="newBbrRate" value="4" /></td>
1158                    <td><input type="radio" name="newBbrRate" value="5" /></td>
1159                    <td><strong><dtml-var "getLangStr('bbExemplary',lang)"></strong></td>
1160                </tr>
1161                </table>
1162            </td>
1163        </tr>
1164        <dtml-comment>
1165        <tr>
1166            <td>
1167                <strong>Tell us why you rated the content this way. (optional)</strong>
1168                <br /><textarea cols="39" rows="5" name="newBbrExpl"></textarea>
1169            </td>
1170        </tr>
1171        </dtml-comment>
1172        </table>
1173    </td>
1174    </form>
1175</tr>
1176<dtml-comment>
1177<!-- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
1178     +-+-  Display Message-Notfication
1179     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- -->
1180</dtml-comment>
1181<tr>
1182    <form method="post" enctype="multipart/form-data">
1183    <td>
1184        <input type="hidden" name="boardId" value="<dtml-var "'%s_%s'%(id,aq_parent.id)">">
1185        <input type="hidden" name="bbmId" value="<dtml-var bbmId>">
1186        <table width="100%" border="0" cellspacing="1" cellpadding="1" class="neutralColorWhite">
1187        <tr style="background-color: #C8DBE2;">
1188            <td><strong><dtml-var "getLangStr('bbSendNotification',lang)"></strong></td>
1189            <td align="right" style="width:83px;"><input type="submit" style="width:80px;font-size:11px;" name="btn" value="<dtml-var "getLangStr('bbBtnNotify',lang)">"></td>
1190        </tr>
1191        <tr>
1192            <td colspan="2"><strong><dtml-var "getLangStr('bbMyEmail',lang)"></strong>&nbsp;<input type="text" name="newBbmEmail" value=""></td>
1193        </tr>
1194        </table>
1195    </td>
1196    </form>
1197</tr>
1198</table>
1199</dtml-in>
1200
1201<!-- // EO displayMessage // -->]]></item>
1202<item key="default"></item>
1203<item key="id"><![CDATA[displayMessage]]></item>
1204<item key="keys" type="list"><list>
1205</list>
1206</item>
1207<item key="mandatory" type="int">0</item>
1208<item key="multilang" type="int">0</item>
1209<item key="name"><![CDATA[Display message]]></item>
1210<item key="repetitive" type="int">0</item>
1211<item key="type"><![CDATA[method]]></item>
1212</dictionary>
1213</item>
1214<item type="dictionary"><dictionary>
1215<item key="custom"><![CDATA[<!-- // BO displayReply // -->
1216
1217<dtml-try>
1218    <dtml-call "REQUEST.set('resMsg',bbMessages.getObjProperty('records',REQUEST))">
1219    <dtml-call "REQUEST.set('resNtf',bbNotifications.getObjProperty('records',REQUEST))">
1220    <dtml-call "REQUEST.set('resRtg',bbRatings.getObjProperty('records',REQUEST))">
1221<dtml-except>
1222    <dtml-call "REQUEST.set('resMsg',{})">
1223    <dtml-call "REQUEST.set('resNtf',{})">
1224    <dtml-call "REQUEST.set('resRtg',{})">
1225</dtml-try>
1226
1227<dtml-in "sort_list(filter_list(resMsg,'bbmId',REQUEST.get('bbmId',''),'=='),'bbmDateTime','asc')" mapping>
1228
1229<!-- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
1230     +-+-  Insert Message Form
1231     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- -->
1232    <table width="95%" border="0" cellspacing="0" cellpadding="0">
1233    <form method="post" enctype="multipart/form-data">
1234    <input type="hidden" name="boardId" value="<dtml-var "'%s_%s'%(id,aq_parent.id)">">
1235    <input type="hidden" name="bbmId" value="<dtml-var bbmId>">
1236    <input type="hidden" name="newBbmBbmId" value="<dtml-var bbmId>">
1237    <input type="hidden" name="newTabSheet" value="displayOverview">
1238    <tr style="background-color: #C8DBE2;">
1239        <td>
1240            <table width="100%" border="0" cellspacing="1" cellpadding="1" class="neutralColorWhite">
1241            <tr style="background-color: #C8DBE2;">
1242                <td><strong><dtml-var "getLangStr('bbReplyMessage',lang)"> <a href="<dtml-var "url_append_params(URL,{'newTabSheet':'displayOverview','boardId':'%s_%s'%(id,aq_parent.id),'bbmId':bbmId})">"><dtml-var bbmSubject></a></strong></td>
1243                <td align="right" style="width:83px;"><input type="submit" style="width:80px;font-size:11px;" name="btn" value="<dtml-var "getLangStr('bbBtnSend',lang)">"></td>
1244            </tr>
1245            </table>
1246        </td>
1247    </tr>
1248    <tr valign="middle">
1249        <td>
1250            <table width="100%" class="neutralColorWhite" border="0" cellspacing="0" cellpadding="3">
1251            <tr>
1252                <td><strong><dtml-var "getLangStr('bbSubject',lang)"></strong></td>
1253                <td><input type="text" name="newBbmSubject" value="AW: <dtml-var bbmSubject>" size="40"></td>
1254            </tr>
1255            <tr valign="middle">
1256                <td><strong><dtml-var "getLangStr('bbAuthor',lang)"></strong></td>
1257                <td><input type="text" name="newBbmAuthor" value="<dtml-var "REQUEST.get('newBbmAuthor',REQUEST.cookies.get('__ac_author',''))">" size="40"></td>
1258            </tr>
1259            <tr valign="middle">
1260                <td><strong>eMail</strong></td>
1261                <td><input type="text" name="newBbmEmail" value="<dtml-var "REQUEST.get('newBbmEmail',REQUEST.cookies.get('__ac_email',''))">" size="40">
1262            </td>
1263            <tr valign="middle">
1264                <td></td>
1265                <td><input type="checkbox" name="newBbnEmailNtf" value="1">&nbsp;<dtml-var "getLangStr('bbSendNotification',lang)"></td>
1266            </tr>
1267            <tr valign="middle">
1268                <td colspan="2"><textarea name="newBbmBody" wrap="on" cols="39" rows="15" style="width:100%"></textarea></td>
1269            </tr>
1270            <tr valign="middle">
1271                <td><img src="<dtml-var "getObjProperty('mail_appendix',REQUEST).getHref(REQUEST)">" alt="" border="0" align="absmiddle" /><strong> <dtml-var "getLangStr('bbFile',lang)"></strong></td>
1272                <td><input type="file" name="newBbmFile" size="19" style="font-size:11px;"></td>
1273            </tr>
1274            </table>
1275        </td>
1276    </tr>
1277    </form>
1278    </table>
1279
1280</dtml-in>
1281
1282<!-- // EO displayReply // -->]]></item>
1283<item key="default"></item>
1284<item key="id"><![CDATA[displayReply]]></item>
1285<item key="keys" type="list"><list>
1286</list>
1287</item>
1288<item key="mandatory" type="int">0</item>
1289<item key="multilang" type="int">0</item>
1290<item key="name"><![CDATA[displayReply]]></item>
1291<item key="repetitive" type="int">0</item>
1292<item key="type"><![CDATA[method]]></item>
1293</dictionary>
1294</item>
1295<item type="dictionary"><dictionary>
1296<item key="custom"><![CDATA[<!-- // BO getChildMessages // -->
1297
1298<dtml-try>
1299    <dtml-call "REQUEST.set('resMsg',bbMessages.getObjProperty('records',REQUEST))">
1300<dtml-except>
1301    <dtml-call "REQUEST.set('resMsg',{})">
1302</dtml-try>
1303
1304<dtml-call "REQUEST.set('res%s'%bbmId,filter_list(resMsg,'bbmBbmId',bbmId,'=='))">
1305
1306<dtml-in "copy_list(REQUEST.get('res%s'%bbmId))" mapping>
1307    <dtml-call "REQUEST.get('res%s'%bbmId).extend(getObjProperty('getChildMessages',REQUEST))">
1308</dtml-in>
1309
1310<dtml-return "REQUEST.get('res%s'%bbmId)">
1311
1312<!-- // EO getChildMessages // -->]]></item>
1313<item key="default"></item>
1314<item key="id"><![CDATA[getChildMessages]]></item>
1315<item key="keys" type="list"><list>
1316</list>
1317</item>
1318<item key="mandatory" type="int">0</item>
1319<item key="multilang" type="int">0</item>
1320<item key="name"><![CDATA[Returns child messages]]></item>
1321<item key="repetitive" type="int">0</item>
1322<item key="type"><![CDATA[method]]></item>
1323</dictionary>
1324</item>
1325<item type="dictionary"><dictionary>
1326<item key="custom"><![CDATA[<!-- // BO sendNotification // -->
1327
1328<dtml-try>
1329    <dtml-call "REQUEST.set('resMsg',bbMessages.getObjProperty('records',REQUEST))">
1330    <dtml-call "REQUEST.set('resNtf',bbNotifications.getObjProperty('records',REQUEST))">
1331<dtml-except>
1332    <dtml-call "REQUEST.set('resMsg',{})">
1333    <dtml-call "REQUEST.set('resNtf',{})">
1334</dtml-try>
1335
1336<dtml-call "REQUEST.set('isSent',[])">
1337<dtml-call "REQUEST.set('bcc','')">
1338
1339<!-- ##### Get recipients ##### -->
1340<dtml-in "sort_list(filter_list(resMsg,'bbmId',REQUEST.get('bbmId'),'=='),'bbmDateTime','asc')" mapping>
1341    <dtml-in "tree_parents(resMsg,'bbmId','bbmBbmId',bbmBbmId,1)" mapping>
1342        <dtml-in "filter_list(resNtf,'bbnMsg',bbmId,'==')" mapping>
1343            <dtml-unless "bbnEmail in isSent">
1344                <dtml-unless "len(isSent)==0">
1345                    <dtml-call "REQUEST.set('bcc',bcc+',')">
1346                </dtml-unless>
1347                <dtml-call "REQUEST.set('bcc',bcc+bbnEmail)">
1348                <dtml-call "isSent.append(bbnEmail)">
1349            </dtml-unless>
1350        </dtml-in>
1351    </dtml-in>
1352</dtml-in>
1353
1354<!-- ##### Send mail ##### -->
1355<dtml-try>
1356
1357<dtml-sendmail MailHost="MailHost">
1358From: <dtml-var "getObjProperty('bbAdmin',REQUEST)">
1359To: <dtml-var "getObjProperty('bbAdmin',REQUEST)">
1360Bcc: <dtml-var bcc>
1361Subject: [<dtml-var "getTitlealt(REQUEST)">] <dtml-var "unicode(REQUEST.get('newBbmSubject'), 'utf-8').encode('latin-1')">
1362
1363<dtml-if "lang=='ger'">
1364
1365Es gibt eine neue Nachricht in Ihrer abonnierten Diskussion.
1366Zum Antworten bitte den Link unten benutzen.
1367---------------------------------------------------------------------
1368Thema: <dtml-var "unicode(REQUEST.get('newBbmSubject'), 'utf-8').encode('latin-1')">
1369Nachricht:
1370
1371<dtml-var "unicode(REQUEST.get('newBbmBody'), 'utf-8').encode('latin-1')">
1372---------------------------------------------------------------------
1373Auf diese Nachricht antworten:
1374<dtml-var "url_append_params(URL,{'newTabSheet':'displayReply','bbmId':REQUEST.get('bbmId'),'boardId':'%s_%s'%(id,aq_parent.id)})">
1375---------------------------------------------------------------------
1376Abmelden von der Benachrichtigung ueber neue Nachrichten:
1377<dtml-var "url_append_params(URL,{'newTabSheet':'displayUnsubscriptionForm','bbmId':REQUEST.get('bbmId'),'boardId':'%s_%s'%(id,aq_parent.id)})">
1378---------------------------------------------------------------------
1379<dtml-else>
1380
1381A reader sent a message to your subscribed thread.
1382To answer this message please use the link below.
1383---------------------------------------------------------------------
1384Subject: <dtml-var "unicode(REQUEST.get('newBbmSubject'), 'utf-8').encode('latin-1')">
1385The message:
1386
1387<dtml-var "unicode(REQUEST.get('newBbmBody'), 'utf-8').encode('latin-1')">
1388---------------------------------------------------------------------
1389Answer this message:
1390<dtml-var "url_append_params(URL,{'newTabSheet':'displayReply','bbmId':REQUEST.get('bbmId'),'boardId':'%s_%s'%(id,aq_parent.id)})">
1391---------------------------------------------------------------------
1392To unsubscribe from notification for coming replies:
1393<dtml-var "url_append_params(URL,{'newTabSheet':'displayUnsubscriptionForm','bbmId':REQUEST.get('bbmId'),'boardId':'%s_%s'%(id,aq_parent.id)})">
1394---------------------------------------------------------------------
1395</dtml-if>
1396
1397</dtml-sendmail>
1398
1399<dtml-call "REQUEST.set('message',getLangStr('bbMsgNotificationSendOk',lang)%(len(isSent)))">
1400
1401<dtml-except>
1402    <dtml-call "REQUEST.set('message',getLangStr('bbMsgNotificationSendNot',lang))">
1403</dtml-try>
1404
1405<dtml-return message>
1406<!-- // EO sendNotification // -->]]></item>
1407<item key="default"></item>
1408<item key="id"><![CDATA[sendNotification]]></item>
1409<item key="keys" type="list"><list>
1410</list>
1411</item>
1412<item key="mandatory" type="int">0</item>
1413<item key="multilang" type="int">0</item>
1414<item key="name"><![CDATA[Send Notification]]></item>
1415<item key="repetitive" type="int">0</item>
1416<item key="type"><![CDATA[method]]></item>
1417</dictionary>
1418</item>
1419<item type="dictionary"><dictionary>
1420<item key="custom"><![CDATA[<!-- // BO insertNotification // -->
1421
1422<dtml-try>
1423    <dtml-if "REQUEST.has_key('newBbmEmail') and REQUEST.get('newBbmEmail').strip()!=''">
1424        <dtml-with bbNotifications>
1425            <dtml-call "REQUEST.set('newRow',{
1426                'bbnId': getNewId(),
1427                'bbnEmail': REQUEST.get('newBbmEmail').strip(),
1428                'bbnMsg': REQUEST.get('bbmId'),
1429                'bbnDateTime': parseLangFmtDate(getLangFmtDate(ZopeTime(),lang),lang)
1430                })">
1431            <dtml-call "resNtf.append(newRow)">
1432            <dtml-call "setObjStateModified(REQUEST)">
1433            <dtml-call "setObjProperty('records',resNtf,lang)">
1434            <dtml-call "onChangeObj(REQUEST,forced=1)">
1435        </dtml-with>
1436        <dtml-call "REQUEST.set('message',getLangStr('bbMsgNotificationInsertOk',lang)%(getLangFmtDate(ZopeTime(),lang)))">
1437    <dtml-else>
1438        <dtml-call "REQUEST.set('message',getLangStr('bbMsgNotificationInsertRetry',lang))">
1439    </dtml-if>
1440<dtml-except>
1441    <dtml-call "REQUEST.set('message',getLangStr('bbMsgNotificationInsertNot',lang))">
1442</dtml-try>
1443
1444<dtml-return message>
1445
1446<!-- // EO insertNotification // -->]]></item>
1447<item key="default"></item>
1448<item key="id"><![CDATA[insertNotification]]></item>
1449<item key="keys" type="list"><list>
1450</list>
1451</item>
1452<item key="mandatory" type="int">0</item>
1453<item key="multilang" type="int">0</item>
1454<item key="name"><![CDATA[Insert Notification]]></item>
1455<item key="repetitive" type="int">0</item>
1456<item key="type"><![CDATA[method]]></item>
1457</dictionary>
1458</item>
1459<item type="dictionary"><dictionary>
1460<item key="custom"><![CDATA[<!-- // BO displayUnsubscriptionForm // -->
1461
1462<form name="registrationForm" method="post">
1463    <input type="hidden" name="boardId" value="<dtml-var "'%s_%s'%(id,aq_parent.id)">">
1464    <input type="hidden" name="<dtml-var actionId>" value="unsubscribe">
1465    <input type="hidden" name="bbmId" value="<dtml-var "REQUEST.get('bbmId')">">
1466    <table border="0" cellspacing="0" cellpadding="10">
1467    <tr valign="top">
1468        <td colspan="2"><strong><dtml-var "getLangStr('bbUnsubscribe',lang)"></strong></td>
1469    </tr>
1470    <tr valign="top">
1471        <td nowrap valign="top"><strong><dtml-var "getLangStr('bbMyEmail',lang)"></strong>&nbsp;<input type="text" name="name" value="">&nbsp;<input type="submit" value="<dtml-var "getLangStr('bbBtnUnsubscribe',lang)">"></td>
1472    </tr>
1473    </table>
1474</form>
1475
1476<!-- // EO displayUnsubscriptionForm // -->]]></item>
1477<item key="default"></item>
1478<item key="id"><![CDATA[displayUnsubscriptionForm]]></item>
1479<item key="keys" type="list"><list>
1480</list>
1481</item>
1482<item key="mandatory" type="int">0</item>
1483<item key="multilang" type="int">0</item>
1484<item key="name"><![CDATA[Display UnsubscriptionForm]]></item>
1485<item key="repetitive" type="int">0</item>
1486<item key="type"><![CDATA[method]]></item>
1487</dictionary>
1488</item>
1489<item type="dictionary"><dictionary>
1490<item key="custom"><![CDATA[<!-- // BO unsubscribe // -->
1491
1492<dtml-try>
1493    <dtml-call "REQUEST.set('resMsg',bbMessages.getObjProperty('records',REQUEST))">
1494    <dtml-call "REQUEST.set('resNtf',bbNotifications.getObjProperty('records',REQUEST))">
1495<dtml-except>
1496    <dtml-call "REQUEST.set('resMsg',{})">
1497    <dtml-call "REQUEST.set('resNtf',{})">
1498</dtml-try>
1499
1500<dtml-call "REQUEST.set('subsEmail',name.strip())">
1501<dtml-call "REQUEST.set('exist',[])">
1502
1503<!-- ##### find subscriber in given thread ##### -->
1504<dtml-in "tree_parents(resMsg,'bbmId','bbmBbmId',bbmId,1)" mapping>
1505    <dtml-call "REQUEST.set('foo',filter_list(resNtf,'bbnMsg',bbmId,'=='))">
1506    <dtml-call "REQUEST.set('exist',exist+filter_list(foo,'bbnEmail',subsEmail,'=='))">
1507</dtml-in>
1508
1509<!-- ##### remove subscriber from given thread ##### -->
1510<dtml-with bbNotifications>
1511    <dtml-if "len(exist)>0">
1512        <dtml-in exist mapping>
1513            <dtml-call "setObjStateModified(REQUEST)">
1514            <dtml-call "setObjProperty('records',filter_list(getObjProperty('records',REQUEST),'bbnId',bbnId,'!='),lang)">
1515            <dtml-call "onChangeObj(REQUEST)">
1516        </dtml-in>
1517        <dtml-call "REQUEST.set('message',getLangStr('bbMsgUnsubscribeOk',lang))">
1518    <dtml-else>
1519        <dtml-call "REQUEST.set('message',getLangStr('bbMsgUnsubcribeNot',lang))">
1520    </dtml-if>
1521</dtml-with>
1522
1523<div style="color:maroon; background-color: white; border: solid 1px black; padding: 4px;">
1524    <dtml-var message>
1525</div>
1526
1527<!-- // EO unsubscribe // -->]]></item>
1528<item key="default"></item>
1529<item key="id"><![CDATA[unsubscribe]]></item>
1530<item key="keys" type="list"><list>
1531</list>
1532</item>
1533<item key="mandatory" type="int">0</item>
1534<item key="multilang" type="int">0</item>
1535<item key="name"><![CDATA[Unsubscribe]]></item>
1536<item key="repetitive" type="int">0</item>
1537<item key="type"><![CDATA[method]]></item>
1538</dictionary>
1539</item>
1540<item type="dictionary"><dictionary>
1541<item key="custom"><![CDATA[<!-- // BO insertNew // -->
1542
1543<dtml-try>
1544    <dtml-call "REQUEST.set('resMsg',bbMessages.getObjProperty('records',REQUEST))">
1545<dtml-except>
1546    <dtml-call "REQUEST.set('resMsg',{})">
1547</dtml-try>
1548 
1549<dtml-comment>    
1550<!-- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
1551     +-+-  Insert Message
1552     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- -->
1553</dtml-comment>
1554
1555<dtml-if "REQUEST.get('boardId','') == '%s_%s'%(id,aq_parent.id) and REQUEST.get('btn','')==getLangStr('bbBtnSend',lang)">
1556
1557    <dtml-with bbMessages>
1558        <dtml-call "REQUEST.set('newRow',{
1559            'bbmId': getNewId(),
1560            'bbmSubject': REQUEST.get('newBbmSubject').strip(),
1561            'bbmAuthor': REQUEST.get('newBbmAuthor').strip(),
1562            'bbmEmail': REQUEST.get('newBbmEmail').strip(),
1563            'bbmDateTime':parseLangFmtDate(getLangFmtDate(ZopeTime(),lang),lang),
1564            'bbmBody': REQUEST.get('newBbmBody').strip(),
1565            'bbmFile': formatObjAttrValue(getObjAttr('bbmFile'),REQUEST.form.get('newBbmFile',None),lang),     
1566            'bbmBbmId': REQUEST.get('newBbmBbmId'),
1567            })">
1568        <dtml-call "resMsg.append(newRow)">
1569        <dtml-call "setObjStateModified(REQUEST)">
1570        <dtml-call "setObjProperty('records',resMsg,lang)">
1571        <dtml-call "onChangeObj(REQUEST,forced=1)">
1572    </dtml-with>
1573   
1574    <dtml-let expires="(_.DateTime() + 365).toZone('GMT').rfc822()">
1575        <dtml-call "RESPONSE.setCookie('__ac_author',newRow['bbmAuthor'],path='/',expires=expires)">
1576        <dtml-call "RESPONSE.setCookie('__ac_email',newRow['bbmEmail'],path='/',expires=expires)">
1577    </dtml-let>
1578
1579    <dtml-call "REQUEST.set('bbmId',newRow['bbmId'])">
1580
1581    <div style="color:maroon; background-color: white; border: solid 1px black; padding: 4px;">
1582        <dtml-try>
1583        <dtml-var "getLangStr('bbMsgMessageInsertOk',lang)%getLangFmtDate(ZopeTime(),lang)">
1584        <dtml-except>
1585        </dtml-try>
1586    </div>
1587   
1588    <dtml-call "RESPONSE.redirect('?newTabSheet=displayOverview&boardId=%s_%s'%(id,aq_parent.id))">
1589
1590</dtml-if>
1591
1592<!-- +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
1593     +-+-  Insert Message Form
1594     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- -->
1595<table width="90%" border="0" cellspacing="0" cellpadding="0">
1596<form method="post" enctype="multipart/form-data">
1597<input type="hidden" name="boardId" value="<dtml-var "'%s_%s'%(id,aq_parent.id)">">
1598<input type="hidden" name="bbmId">
1599<input type="hidden" name="newBbmBbmId">
1600<input type="hidden" name="newTabSheet" value="insertNew">
1601<tr style="background-color: #C8DBE2;">
1602    <td>
1603        <table width="100%" border="0" cellspacing="1" cellpadding="1" class="neutralColorWhite">
1604        <tr style="background-color: #C8DBE2;">
1605            <td><strong><dtml-var "getLangStr('bbInsertTopic',lang)"></strong></td>
1606            <td align="right" style="width:83px;"><input type="submit" style="width:80px;font-size:11px;" name="btn" value="<dtml-var "getLangStr('bbBtnSend',lang)">"></td>
1607        </tr>
1608        </table>
1609    </td>
1610</tr>
1611<tr valign="middle">
1612    <td>
1613        <table width="100%" class="neutralColorWhite" border="0" cellspacing="0" cellpadding="3">
1614        <tr>
1615            <td><strong><dtml-var "getLangStr('bbSubject',lang)"></strong></td>
1616            <td><input type="text" name="newBbmSubject" value="" size="40"></td>
1617        </tr>
1618        <tr valign="middle">
1619            <td><strong><dtml-var "getLangStr('bbAuthor',lang)"></strong></td>
1620            <td><input type="text" name="newBbmAuthor" value="" size="40"></td>
1621        </tr>
1622        <tr valign="middle">
1623            <td><strong>eMail</strong></td>
1624            <td><input type="text" name="newBbmEmail" value="" size="40">
1625        </td>
1626        <tr valign="middle">
1627            <td></td>
1628            <td><input type="checkbox" name="newBbnEmailNtf" value="1">&nbsp;<dtml-var "getLangStr('bbSendNotification',lang)"></td>
1629        </tr>
1630        <tr valign="middle">
1631            <td colspan="2"><textarea name="newBbmBody" wrap="on" cols="39" rows="15" style="width:100%"></textarea></td>
1632        </tr>
1633        <tr valign="middle">
1634            <td><img src="<dtml-var "getObjProperty('mail_appendix',REQUEST).getHref(REQUEST)">" alt="" border="0" align="absmiddle" /><strong> <dtml-var "getLangStr('bbFile',lang)"></strong></td>
1635            <td><input type="file" name="newBbmFile" size="19" style="font-size:11px;"></td>
1636        </tr>
1637        </table>
1638    </td>
1639</tr>
1640</form>
1641</table>
1642
1643<!-- // EO insertNew // -->]]></item>
1644<item key="default"></item>
1645<item key="id"><![CDATA[insertNew]]></item>
1646<item key="keys" type="list"><list>
1647</list>
1648</item>
1649<item key="mandatory" type="int">0</item>
1650<item key="multilang" type="int">0</item>
1651<item key="name"><![CDATA[insertNew]]></item>
1652<item key="repetitive" type="int">0</item>
1653<item key="type"><![CDATA[method]]></item>
1654</dictionary>
1655</item>
1656<item type="dictionary"><dictionary>
1657<item key="custom"><![CDATA[<!-- // BO onChangeObjEvt // -->
1658
1659<!-- // EO onChangeObjEvt // -->]]></item>
1660<item key="default"></item>
1661<item key="id"><![CDATA[onChangeObjEvt]]></item>
1662<item key="keys" type="list"><list>
1663</list>
1664</item>
1665<item key="mandatory" type="int">0</item>
1666<item key="multilang" type="int">0</item>
1667<item key="name"><![CDATA[onChangeObjEvt]]></item>
1668<item key="repetitive" type="int">0</item>
1669<item key="type"><![CDATA[method]]></item>
1670</dictionary>
1671</item>
1672<item type="dictionary"><dictionary>
1673<item key="custom"><![CDATA[<!-- // BO insertRating // -->
1674
1675<dtml-try>
1676    <dtml-if "REQUEST.has_key('newBbrRate')">
1677        <dtml-with bbRatings>
1678            <dtml-call "REQUEST.set('newRow',{
1679                'bbrId': getNewId(),
1680                'bbrMsg': REQUEST.get('bbmId'),
1681                'bbrRate': REQUEST.get('newBbrRate'),
1682                'bbrExpl': REQUEST.get('newBbrExpl'),
1683                'bbrDateTime': parseLangFmtDate(getLangFmtDate(ZopeTime(),lang),lang)
1684                })">
1685            <dtml-call "resRtg.append(newRow)">
1686            <dtml-call "setObjStateModified(REQUEST)">
1687            <dtml-call "setObjProperty('records',resRtg,lang)">
1688            <dtml-call "onChangeObj(REQUEST,forced=1)">
1689        </dtml-with>
1690        <dtml-call "REQUEST.set('message',getLangStr('bbMsgRatingInsertOk',lang)%(getLangFmtDate(ZopeTime(),lang)))">
1691    <dtml-else>
1692        <dtml-call "REQUEST.set('message',getLangStr('bbMsgRatingInsertRetry',lang))">
1693    </dtml-if>
1694<dtml-except>
1695    <dtml-call "REQUEST.set('message',getLangStr('bbMsgRatingInsertNot',lang))">
1696</dtml-try>
1697
1698<dtml-return message>
1699
1700<!-- // EO insertRating // -->]]></item>
1701<item key="default"></item>
1702<item key="id"><![CDATA[insertRating]]></item>
1703<item key="keys" type="list"><list>
1704</list>
1705</item>
1706<item key="mandatory" type="int">0</item>
1707<item key="multilang" type="int">0</item>
1708<item key="name"><![CDATA[insertRating]]></item>
1709<item key="repetitive" type="int">0</item>
1710<item key="type"><![CDATA[method]]></item>
1711</dictionary>
1712</item>
1713<item type="dictionary"><dictionary>
1714<item key="custom"><![CDATA[/* BO f_css_defaults */
1715
1716/* EO f_css_defaults */]]></item>
1717<item key="default"></item>
1718<item key="id"><![CDATA[f_css_defaults]]></item>
1719<item key="keys" type="list"><list>
1720</list>
1721</item>
1722<item key="mandatory" type="int">0</item>
1723<item key="multilang" type="int">0</item>
1724<item key="name"><![CDATA[CSS]]></item>
1725<item key="repetitive" type="int">0</item>
1726<item key="type"><![CDATA[method]]></item>
1727</dictionary>
1728</item>
1729</list>
1730</item>
1731<item key="access" type="dictionary"><dictionary>
1732<item key="edit" type="list"><list>
1733<item><![CDATA[ZMSAdministrator]]></item>
1734<item><![CDATA[ZMSAuthor]]></item>
1735<item><![CDATA[ZMSEditor]]></item>
1736</list>
1737</item>
1738<item key="insert" type="list"><list>
1739<item><![CDATA[ZMSAdministrator]]></item>
1740<item><![CDATA[ZMSAuthor]]></item>
1741<item><![CDATA[ZMSEditor]]></item>
1742</list>
1743</item>
1744</dictionary>
1745</item>
1746<item key="acquired" type="int">0</item>
1747<item key="name"><![CDATA[Bulletin-Board]]></item>
1748<item key="package"><![CDATA[com.zms.discussions]]></item>
1749<item key="type"><![CDATA[ZMSObject]]></item>
1750</dictionary>
1751</item>
1752</dictionary>
1753</item>
1754<item type="dictionary"><dictionary>
1755<item key="dtml"><![CDATA[<!-- BO bodyContentZMSCustom_BulletinBoardMessages -->
1756
1757  <h2><dtml-var "getTitlealt(REQUEST)"></h2>
1758  <p class="description"><dtml-var "len(getObjProperty(getMetaobj(meta_id)['attrs'][0]['id'],REQUEST))"> <dtml-var "getLangStr('ATTR_RECORDS',lang)"></p>
1759
1760<!-- EO bodyContentZMSCustom_BulletinBoardMessages -->]]></item>
1761<item key="enabled" type="int">0</item>
1762<item key="key"><![CDATA[BulletinBoardMessages]]></item>
1763<item key="value" type="dictionary"><dictionary>
1764<item key="__obj_attrs__" type="list"><list>
1765<item type="dictionary"><dictionary>
1766<item key="custom" type="int">0</item>
1767<item key="default"></item>
1768<item key="id"><![CDATA[records]]></item>
1769<item key="keys" type="list"><list>
1770</list>
1771</item>
1772<item key="mandatory" type="int">1</item>
1773<item key="multilang" type="int">0</item>
1774<item key="name"><![CDATA[Records]]></item>
1775<item key="repetitive" type="int">0</item>
1776<item key="type"><![CDATA[list]]></item>
1777</dictionary>
1778</item>
1779<item type="dictionary"><dictionary>
1780<item key="custom" type="int">0</item>
1781<item key="default"></item>
1782<item key="id"><![CDATA[bbmId]]></item>
1783<item key="keys" type="list"><list>
1784</list>
1785</item>
1786<item key="mandatory" type="int">1</item>
1787<item key="multilang" type="int">0</item>
1788<item key="name"><![CDATA[Id]]></item>
1789<item key="repetitive" type="int">0</item>
1790<item key="type"><![CDATA[identifier]]></item>
1791</dictionary>
1792</item>
1793<item type="dictionary"><dictionary>
1794<item key="custom" type="file">
1795<data content_type="image/gif" filename="ico_message.gif" type="file">47494638396112001000b30000fcd7650000000808084242422222223c3c3c0f0f0f5555555a5a5a282828333333191919ffffff00000000000000000021f9040100000c002c000000001200100000044590c949abbdb88e518a22d981204069128b511d66eb0ad360066560dbb324bb7c2d15b3db0d40234a12bd5e6042a8e170b98921199d088850e7b222804984986d664c2e6722003b</data></item>
1796<item key="default"></item>
1797<item key="id"><![CDATA[icon]]></item>
1798<item key="keys" type="list"><list>
1799</list>
1800</item>
1801<item key="mandatory" type="int">0</item>
1802<item key="multilang" type="int">0</item>
1803<item key="name"><![CDATA[Icon]]></item>
1804<item key="repetitive" type="int">0</item>
1805<item key="type"><![CDATA[resource]]></item>
1806</dictionary>
1807</item>
1808<item type="dictionary"><dictionary>
1809<item key="custom" type="int">1</item>
1810<item key="default"></item>
1811<item key="id"><![CDATA[bbmSubject]]></item>
1812<item key="keys" type="list"><list>
1813</list>
1814</item>
1815<item key="mandatory" type="int">1</item>
1816<item key="multilang" type="int">0</item>
1817<item key="name"><![CDATA[Subject]]></item>
1818<item key="repetitive" type="int">0</item>
1819<item key="type"><![CDATA[string]]></item>
1820</dictionary>
1821</item>
1822<item type="dictionary"><dictionary>
1823<item key="custom" type="int">1</item>
1824<item key="default"></item>
1825<item key="id"><![CDATA[bbmAuthor]]></item>
1826<item key="keys" type="list"><list>
1827</list>
1828</item>
1829<item key="mandatory" type="int">1</item>
1830<item key="multilang" type="int">0</item>
1831<item key="name"><![CDATA[Author]]></item>
1832<item key="repetitive" type="int">0</item>
1833<item key="type"><![CDATA[string]]></item>
1834</dictionary>
1835</item>
1836<item type="dictionary"><dictionary>
1837<item key="custom" type="int">1</item>
1838<item key="default"></item>
1839<item key="id"><![CDATA[bbmDateTime]]></item>
1840<item key="keys" type="list"><list>
1841</list>
1842</item>
1843<item key="mandatory" type="int">1</item>
1844<item key="multilang" type="int">0</item>
1845<item key="name"><![CDATA[Date/Time]]></item>
1846<item key="repetitive" type="int">0</item>
1847<item key="type"><![CDATA[datetime]]></item>
1848</dictionary>
1849</item>
1850<item type="dictionary"><dictionary>
1851<item key="custom" type="int">0</item>
1852<item key="default"></item>
1853<item key="id"><![CDATA[bbmEmail]]></item>
1854<item key="keys" type="list"><list>
1855</list>
1856</item>
1857<item key="mandatory" type="int">0</item>
1858<item key="multilang" type="int">0</item>
1859<item key="name"><![CDATA[e-Mail]]></item>
1860<item key="repetitive" type="int">0</item>
1861<item key="type"><![CDATA[string]]></item>
1862</dictionary>
1863</item>
1864<item type="dictionary"><dictionary>
1865<item key="custom" type="int">0</item>
1866<item key="default"></item>
1867<item key="id"><![CDATA[bbmBody]]></item>
1868<item key="keys" type="list"><list>
1869</list>
1870</item>
1871<item key="mandatory" type="int">0</item>
1872<item key="multilang" type="int">0</item>
1873<item key="name"><![CDATA[Body]]></item>
1874<item key="repetitive" type="int">0</item>
1875<item key="type"><![CDATA[text]]></item>
1876</dictionary>
1877</item>
1878<item type="dictionary"><dictionary>
1879<item key="custom" type="int">0</item>
1880<item key="default"></item>
1881<item key="id"><![CDATA[bbmFile]]></item>
1882<item key="keys" type="list"><list>
1883</list>
1884</item>
1885<item key="mandatory" type="int">0</item>
1886<item key="multilang" type="int">0</item>
1887<item key="name"><![CDATA[File]]></item>
1888<item key="repetitive" type="int">0</item>
1889<item key="type"><![CDATA[file]]></item>
1890</dictionary>
1891</item>
1892<item type="dictionary"><dictionary>
1893<item key="custom" type="int">0</item>
1894<item key="default"></item>
1895<item key="id"><![CDATA[bbmBbmId]]></item>
1896<item key="keys" type="list"><list>
1897</list>
1898</item>
1899<item key="mandatory" type="int">0</item>
1900<item key="multilang" type="int">0</item>
1901<item key="name"><![CDATA[In reply to]]></item>
1902<item key="repetitive" type="int">0</item>
1903<item key="type"><![CDATA[BulletinBoardMessages]]></item>
1904</dictionary>
1905</item>
1906</list>
1907</item>
1908<item key="access" type="dictionary"><dictionary>
1909<item key="edit" type="list"><list>
1910<item><![CDATA[ZMSAdministrator]]></item>
1911<item><![CDATA[ZMSAuthor]]></item>
1912<item><![CDATA[ZMSEditor]]></item>
1913</list>
1914</item>
1915<item key="insert" type="list"><list>
1916<item><![CDATA[ZMSAdministrator]]></item>
1917<item><![CDATA[ZMSAuthor]]></item>
1918<item><![CDATA[ZMSEditor]]></item>
1919</list>
1920</item>
1921</dictionary>
1922</item>
1923<item key="acquired" type="int">0</item>
1924<item key="name"><![CDATA[Messages]]></item>
1925<item key="package"><![CDATA[com.zms.discussions]]></item>
1926<item key="type"><![CDATA[ZMSRecordSet]]></item>
1927</dictionary>
1928</item>
1929</dictionary>
1930</item>
1931<item type="dictionary"><dictionary>
1932<item key="dtml"><![CDATA[<!-- BO bodyContentZMSCustom_BulletinBoardNotifications -->
1933
1934  <h2><dtml-var "getTitlealt(REQUEST)"></h2>
1935  <p class="description"><dtml-var "len(getObjProperty(getMetaobj(meta_id)['attrs'][0]['id'],REQUEST))"> <dtml-var "getLangStr('ATTR_RECORDS',lang)"></p>
1936
1937<!-- EO bodyContentZMSCustom_BulletinBoardNotifications -->]]></item>
1938<item key="enabled" type="int">0</item>
1939<item key="key"><![CDATA[BulletinBoardNotifications]]></item>
1940<item key="value" type="dictionary"><dictionary>
1941<item key="__obj_attrs__" type="list"><list>
1942<item type="dictionary"><dictionary>
1943<item key="custom" type="int">0</item>
1944<item key="default"></item>
1945<item key="id"><![CDATA[records]]></item>
1946<item key="keys" type="list"><list>
1947</list>
1948</item>
1949<item key="mandatory" type="int">1</item>
1950<item key="multilang" type="int">0</item>
1951<item key="name"><![CDATA[records]]></item>
1952<item key="repetitive" type="int">0</item>
1953<item key="type"><![CDATA[list]]></item>
1954</dictionary>
1955</item>
1956<item type="dictionary"><dictionary>
1957<item key="custom" type="int">0</item>
1958<item key="default"></item>
1959<item key="id"><![CDATA[bbnId]]></item>
1960<item key="keys" type="list"><list>
1961</list>
1962</item>
1963<item key="mandatory" type="int">1</item>
1964<item key="multilang" type="int">0</item>
1965<item key="name"><![CDATA[Id]]></item>
1966<item key="repetitive" type="int">0</item>
1967<item key="type"><![CDATA[identifier]]></item>
1968</dictionary>
1969</item>
1970<item type="dictionary"><dictionary>
1971<item key="custom" type="int">1</item>
1972<item key="default"></item>
1973<item key="id"><![CDATA[bbnEmail]]></item>
1974<item key="keys" type="list"><list>
1975</list>
1976</item>
1977<item key="mandatory" type="int">1</item>
1978<item key="multilang" type="int">0</item>
1979<item key="name"><![CDATA[Email]]></item>
1980<item key="repetitive" type="int">0</item>
1981<item key="type"><![CDATA[string]]></item>
1982</dictionary>
1983</item>
1984<item type="dictionary"><dictionary>
1985<item key="custom" type="int">1</item>
1986<item key="default"></item>
1987<item key="id"><![CDATA[bbnMsg]]></item>
1988<item key="keys" type="list"><list>
1989</list>
1990</item>
1991<item key="mandatory" type="int">0</item>
1992<item key="multilang" type="int">0</item>
1993<item key="name"><![CDATA[Msg]]></item>
1994<item key="repetitive" type="int">0</item>
1995<item key="type"><![CDATA[BulletinBoardMessages]]></item>
1996</dictionary>
1997</item>
1998<item type="dictionary"><dictionary>
1999<item key="custom" type="int">1</item>
2000<item key="default"></item>
2001<item key="id"><![CDATA[bbnDateTime]]></item>
2002<item key="keys" type="list"><list>
2003</list>
2004</item>
2005<item key="mandatory" type="int">0</item>
2006<item key="multilang" type="int">0</item>
2007<item key="name"><![CDATA[Date/Time]]></item>
2008<item key="repetitive" type="int">0</item>
2009<item key="type"><![CDATA[datetime]]></item>
2010</dictionary>
2011</item>
2012<item type="dictionary"><dictionary>
2013<item key="custom" type="file">
2014<data content_type="image/gif" filename="ico_notification.gif" type="file">47494638396112001000f70000ffffffc20000980000fdfdfcfaf0f0fefefeca00009900005f2900ab000072400a7b4c1ed3c4b6ecd0d0a31b1bab2121773209ddd0c4b83535c05255ad3232b41111f9f7f56f3d0c862c12ecc9c9efd2d2e4bcbc9c7b5afefdfdeed3d3b20000b60101733f0df4dedeae0b0cb60000c26868aa0000e100008a5f33a10606cab49efefcfca1000079390ce7babacb998fa60000865d307a4515b19478eee9e3d5c6b7c90000602c00c5000093351e774412a20000f8f5f2833a11a687699d0b00f9f1f1692c00c00000ad0f0f9a0000b59b80622800a90000ae0000a006066b3904eee7e18b1f05f6f3f0ac2727b39980bd5454fcfbfab244449f7c5a784f1c926b46fcf7f77e5328e3dad0f7f3f0b54343f5dedf865c33b82023c86a6ab9a087cb62629c0000fbf9f8b50100c600009f0000d30000d10000cb0000d5c5b5ba0000bd0000ab0600683100e9cecea70000eccece613000b89e83fcf8f8960101d89595de0000774814ce7777a48261cb8181c26666e2dacebc0000b4997ef7ebebfffefee6b2b2a20a01713d09b31b1bad0000ac7e64bb0000d98f8ffdfafaffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021f9040100008a002c000000001200100000089e0015091c48b0204139545e6cc9e0c1a0c13c71307421e4a4c4068703b1dc8090800c92140e4460544443810c366784143aa0059106874b5028f96120c007163b2a48f0b2c74d411f089804b04102c6910027cc2469509001821e87d0a8315106879d3e780c468811441088110fa44009349283911c13eab81839f0491b436c0b7ed131252ec1340baef0b13b904b08157c0556193423b0223f178ac40d08003b</data></item>
2015<item key="default"></item>
2016<item key="id"><![CDATA[icon]]></item>
2017<item key="keys" type="list"><list>
2018</list>
2019</item>
2020<item key="mandatory" type="int">0</item>
2021<item key="multilang" type="int">0</item>
2022<item key="name"><![CDATA[icon]]></item>
2023<item key="repetitive" type="int">0</item>
2024<item key="type"><![CDATA[resource]]></item>
2025</dictionary>
2026</item>
2027</list>
2028</item>
2029<item key="access" type="dictionary"><dictionary>
2030<item key="edit" type="list"><list>
2031<item><![CDATA[ZMSAdministrator]]></item>
2032<item><![CDATA[ZMSAuthor]]></item>
2033<item><![CDATA[ZMSEditor]]></item>
2034</list>
2035</item>
2036<item key="insert" type="list"><list>
2037<item><![CDATA[ZMSAdministrator]]></item>
2038<item><![CDATA[ZMSAuthor]]></item>
2039<item><![CDATA[ZMSEditor]]></item>
2040</list>
2041</item>
2042</dictionary>
2043</item>
2044<item key="acquired" type="int">0</item>
2045<item key="name"><![CDATA[Notifications]]></item>
2046<item key="package"><![CDATA[com.zms.discussions]]></item>
2047<item key="type"><![CDATA[ZMSRecordSet]]></item>
2048</dictionary>
2049</item>
2050</dictionary>
2051</item>
2052</list>
Note: See TracBrowser for help on using the repository browser.