source: ZMS/trunk/import/lms.metaobj.xml @ 1225

Revision 1225, 164.4 KB checked in by zmsdev, 18 months ago (diff)

jQuery UI

Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<list>
3<item type="dictionary"><dictionary>
4<item key="dtml"><![CDATA[<!-- BO bodyContentZMSCustom_SCORMutil -->
5
6
7<!-- EO bodyContentZMSCustom_SCORMutil -->]]></item>
8<item key="enabled" type="int">1</item>
9<item key="key"><![CDATA[SCORMutil]]></item>
10<item key="value" type="dictionary"><dictionary>
11<item key="__obj_attrs__" type="list"><list>
12<item type="dictionary"><dictionary>
13<item key="custom"><![CDATA[<!--// BO SCORMutil.standard_html_header //-->
14
15<dtml-if "len(REQUEST.form.get('manage_tabs_message',REQUEST.get('manage_tabs_message','')))>0">
16 <style>
17  .system-msg {
18    font-family: Verdana, Helvetica, sans-serif;
19    font-size: 10pt;
20    background-color: #ffffff;
21    border:  1px solid #000000;
22    margin-bottom: 6px;
23    margin-top: 6px;
24    padding: 4px;
25    width: 100%;
26    color: #660033;
27  }
28 </style>
29 <div class="system-msg">
30  <dtml-var "REQUEST.form.get('manage_tabs_message',REQUEST.get('manage_tabs_message',''))">
31  (<dtml-var "getLangFmtDate(ZopeTime())">)
32 </div>
33</dtml-if>
34
35<!--// EO SCORMutil.standard_html_header //-->]]></item>
36<item key="default"/>
37<item key="id"><![CDATA[standard_html_header]]></item>
38<item key="keys" type="list"><list>
39</list>
40</item>
41<item key="mandatory" type="int">0</item>
42<item key="multilang" type="int">0</item>
43<item key="name"><![CDATA[MASTER: before content]]></item>
44<item key="repetitive" type="int">0</item>
45<item key="type"><![CDATA[method]]></item>
46</dictionary>
47</item>
48<item type="dictionary"><dictionary>
49<item key="custom"><![CDATA[<!--// BO SCORMutil.standard_html_request //-->
50
51<dtml-call "REQUEST.set('member',getPersonalProfileByEmail(_,_,userObjEmail=AUTHENTICATED_USER.getId()))">
52
53<!--// EO SCORMutil.standard_html_request //-->]]></item>
54<item key="default"/>
55<item key="id"><![CDATA[standard_html_request]]></item>
56<item key="keys" type="list"><list>
57</list>
58</item>
59<item key="mandatory" type="int">0</item>
60<item key="multilang" type="int">0</item>
61<item key="name"><![CDATA[MASTER: init request]]></item>
62<item key="repetitive" type="int">0</item>
63<item key="type"><![CDATA[method]]></item>
64</dictionary>
65</item>
66<item type="dictionary"><dictionary>
67<item key="custom"><![CDATA[<!--// BO manage_login //-->
68
69<dtml-call "RESPONSE.redirect(getHref2IndexHtml(REQUEST)+'?manage_tabs_message='+url_quote(REQUEST.get('manage_tabs_message','')))">
70
71<!--// EO manage_login //-->
72]]></item>
73<item key="default"/>
74<item key="id"><![CDATA[manage_login]]></item>
75<item key="keys" type="list"><list>
76</list>
77</item>
78<item key="mandatory" type="int">0</item>
79<item key="multilang" type="int">0</item>
80<item key="name"><![CDATA[Template_L0: Member login]]></item>
81<item key="repetitive" type="int">0</item>
82<item key="type"><![CDATA[DTML Method]]></item>
83</dictionary>
84</item>
85<item type="dictionary"><dictionary>
86<item key="custom"><![CDATA[<dtml-call "REQUEST.set('op','registering')">
87<dtml-with content>
88<dtml-let membersFldr="e200000"
89          meta_id="'personalProfile'"
90          valid_ids="['profileEmail','profileLastname','profileFirstname','profileAcademic','profileSalutation','profileProfession','profileDiscipline','profileCompany','profileStreet','profileZip','profileCity','profileCountry','profileTel','profileFax','profileWWW','profilePublic']">
91<dtml-var f_standard_html_header>
92
93<!-- ############################### -->
94<!----------// BO Register //---------->
95<!-- ############################### -->
96
97<dtml-if "REQUEST.get('ZMS_INSERT','')==meta_id and
98          REQUEST.get('btn','')==getLangStr('BTN_SEND',lang)">
99
100  <dtml-call "REQUEST.set('message','')">
101
102  <!--// BO Search for existing profile by e-Mail //-->
103  <dtml-call "REQUEST.set('found',0)">
104  <dtml-in "membersFldr.filteredTreeNodes(REQUEST,ZMS_INSERT)">
105   <dtml-call "REQUEST.set('found',found or getObjProperty('profileEmail',REQUEST)==REQUEST['profileEmail'])">
106  </dtml-in>
107  <!--// EO Search for existing profile by e-Mail //-->
108
109  <!--// BO Create profile //-->
110  <dtml-if "found==0">
111
112 <!----------// BO Register: create a new personalProfile //---------->
113  <dtml-call "REQUEST.set('profileRole','Participant')">
114  <dtml-call "REQUEST.set('profilePasswd',str(rand_int(999999)))">
115  <dtml-call insertPersonalProfile>
116  <dtml-call "REQUEST.set('message',REQUEST.get('message','')+getLangStr('LMS_REG_REG_OK',lang)+'!<br />')">
117 <!----------// EO Register: create a new personalProfile //---------->
118
119 <!----------// BO Apply for a course: create a new personalTrack //---------->
120 <dtml-if "SESSION.get('sessionRefObjPath',None) is not None">
121  <dtml-let courseFldr="getLinkObj(SESSION['sessionRefObjPath'],REQUEST)">
122  <dtml-call "personalProfile.manage_addZMSCustom(meta_id='personalTrack',
123   values={'id_prefix':'personalTracks'
124          ,'active':1
125          ,'titlealt':courseFldr.getTitlealt(REQUEST)
126          ,'attrRef':SESSION['sessionRefObjPath']
127          ,'attrData':{}
128          ,'attrCreationDt':ZopeTime()
129   },REQUEST=REQUEST)">
130  <dtml-call "SESSION.set('sessionRefObjPath',None)">
131  <dtml-call "REQUEST.set('message',REQUEST.get('message','')+getLangStr('LMS_REG_COURSE',lang)+'!<br/>')">
132  </dtml-let>
133 </dtml-if>
134 <!----------// EO Apply for a course: create a new personalTrack //---------->
135
136<dtml-try>
137<dtml-sendmail MailHost="MailHost">
138To: <dtml-var "REQUEST['profileEmail']">
139From: <dtml-var "getConfProperty('ZMSAdministrator.email')">
140Subject: Registration: <dtml-var "getDocumentElement().getTitle(REQUEST)">
141
142<dtml-var "getLangStr('LMS_REG_SALUTATION',lang)"> <dtml-var "REQUEST['profileSalutation']"> <dtml-var "REQUEST['profileAcademic']"> <dtml-var "REQUEST['profileFirstname']"> <dtml-var "REQUEST['profileLastname']">,
143
144<dtml-var "getLangStr('LMS_REG_REG_OK',lang)">.
145
146  <dtml-var "getLangStr('LMS_REG_LOGIN',lang)">: <dtml-var "REQUEST['profileEmail']">
147  <dtml-var "getLangStr('profilePasswd',lang)">: <dtml-var "REQUEST['profilePasswd']">
148
149<dtml-var "getLangStr('LMS_REG_REGARDS',lang)">.
150
151</dtml-sendmail>
152<dtml-call "REQUEST.set('message',REQUEST.get('message','')+getLangStr('LMS_REG_NOTIFICATION_SENT',lang)+'!<br/>')">
153<dtml-except></dtml-try>
154
155  <!--// EO Create profile //-->
156
157  <dtml-else>
158  <!--// BO Existing profile //-->
159   <dtml-call "REQUEST.set('message',getLangStr('LMS_REG_PROFILE_EXISTS',lang)+'!<br/>')">
160  </dtml-if>
161  <!--// EO Existing profile //-->
162
163  <dtml-call "RESPONSE.redirect('%s?manage_tabs_message=%s'%(getDocumentElement().absolute_url(),url_quote(message)))">
164
165</dtml-if>
166
167<!----------// EO Register //---------->
168
169<!-- ######################################## -->
170<!----------// BO Registration Form //---------->
171<!-- ######################################## -->
172
173<h1><dtml-var "getLangStr('LMS_REG_TITLE',lang)"></h1>
174<p class="standard"><dtml-var "getLangStr('LMS_REG_PLEASE_ENTER',lang)">.</p>
175<dtml-call "REQUEST.set('ZMS_INSERT',meta_id)">
176<form name="form0" action="<dtml-var URL>" method="post" encoding="multipart/form-data">
177<input type="hidden" name="ZMS_INSERT" value="<dtml-var ZMS_INSERT>">
178<table cellspacing="0" cellpadding="2" border="1">
179<dtml-if "SESSION.get('sessionRefObjPath',None) is not None">
180<dtml-with "getLinkObj(SESSION['sessionRefObjPath'],REQUEST)">
181<tr>
182 <td><div class="form-label"><dtml-var "getLangStr('REGISTER_COURSE',lang)"></div></td>
183 <td class="form-element">
184  <h1><dtml-var "getTitle(REQUEST)"></h1>
185  <p class="description"><dtml-var "getObjProperty('attr_dc_description',REQUEST)"></p>
186 </td>
187</tr>
188</dtml-with>
189</dtml-if>
190<dtml-in "getMetaobjAttrIds(meta_id)">
191 <dtml-let metaObjAttr="getMetaobjAttr(meta_id,_['sequence-item'])">
192  <dtml-if "metaObjAttr['id'] in valid_ids">
193   <tr>
194    <td><div class="form-label"><dtml-var "getLangStr(metaObjAttr['id'],lang)"><dtml-if "metaObjAttr.get('mandatory',0)==1"><dtml-var FORM_LABEL_MANDATORY></dtml-if></div></td>
195    <td><dtml-var "getObjInput(metaObjAttr['id'],REQUEST)">
196   </tr>
197  </dtml-if>
198 </dtml-let>
199</dtml-in>
200</table>
201<hr size="1" />
202<p><dtml-var "getLangStr('LMS_REG_HINT',lang)">:
203[<dtml-var FORM_LABEL_MANDATORY>] <dtml-var "getLangStr('LMS_REG_MANDATORY',lang)">. <br />
204<dtml-var "getLangStr('LMS_REG_CONFIRM_ANNOUNCE',lang)">.<br />
205<hr size="1" />
206<p class="form-element">
207 <input class="ui-button ui-state-default ui-corner-all" type="submit" name="btn" value="<dtml-var "getLangStr('BTN_SEND',lang)">"> &nbsp;&nbsp;&nbsp;&nbsp;
208 <input class="ui-button ui-state-default ui-corner-all" type="reset" name="btn" value="<dtml-var "getLangStr('BTN_RESET',lang)">">
209</p>
210</form>
211
212<!----------// EO Registration Form //---------->
213
214<dtml-var f_standard_html_footer>
215</dtml-let>
216</dtml-with>
217]]></item>
218<item key="default"/>
219<item key="id"><![CDATA[manage_register]]></item>
220<item key="keys" type="list"><list>
221</list>
222</item>
223<item key="mandatory" type="int">0</item>
224<item key="multilang" type="int">0</item>
225<item key="name"><![CDATA[Template_L0: Member registration]]></item>
226<item key="repetitive" type="int">0</item>
227<item key="type"><![CDATA[DTML Method]]></item>
228</dictionary>
229</item>
230</list>
231</item>
232<item key="acquired" type="int">0</item>
233<item key="name"><![CDATA[Course-Util]]></item>
234<item key="package"><![CDATA[com.zms.elc.lms]]></item>
235<item key="type"><![CDATA[ZMSLibrary]]></item>
236</dictionary>
237</item>
238</dictionary>
239</item>
240<item type="dictionary"><dictionary>
241<item key="dtml"><![CDATA[<!-- BO bodyContentZMSCustom_courseContent -->
242
243<dtml-comment>
244##########################################################################################
245# Author:   Dr.Frank Hoffmann <fh@hoffmannliebenberg.de>
246# Company:  HOFFMANN+LIEBENBERG GmbH
247# WWW:      http://www.hoffmannliebenberg.de
248# Date:     10.06.2007
249# Version:  1.1.0
250# Comments: ZMS eLearning components.
251##########################################################################################
252</dtml-comment>
253
254<dtml-call "REQUEST.set('templateUrl','%s/bodyContentZMSCustom_%s'%(absolute_url(),meta_id))">
255<dtml-call "REQUEST.set('actionId','ACTION%s'%meta_id)">
256<dtml-call "REQUEST.set('userObjTrack',getObjProperty('getPersonalTrack',REQUEST))">
257<dtml-call "getObjProperty('getManifestAbsoluteUrl',REQUEST)">
258<dtml-call "SESSION.set('courseId',getHome().id+'_'+getParentNode().id.lstrip('e'))">
259
260
261<dtml-comment>
262######################################################################
263# Redirect to frameset
264######################################################################
265</dtml-comment>
266<dtml-if "REQUEST.get(actionId,'')==''">
267<!-- Redirect to frameset -->
268<dtml-call "REQUEST.set('url',url_append_params(REQUEST['templateUrl'],{'lang':lang,actionId:'Frameset_Outer'}))">
269<dtml-if "REQUEST.form.has_key('scoId')">
270<dtml-call "REQUEST.set('url',url_append_params(REQUEST['url'],{'scoId':REQUEST['scoId']}))">
271</dtml-if>
272<dtml-call "RESPONSE.redirect(REQUEST['url'])">
273
274<dtml-comment>
275######################################################################
276</dtml-comment>
277
278<dtml-else>
279
280<!-- Get IMS-Manifest -->
281<dtml-call "REQUEST.set('imsmanifest',getObjProperty('_imsmanifest',REQUEST))">
282
283<!--  Post data to track -->
284<dtml-var "getObjProperty('postTrack',REQUEST)">
285
286<!-- Get scoId -->
287<dtml-if "REQUEST.form.has_key('scoId')">
288 <!-- from request -->
289 <dtml-in imsmanifest mapping>
290  <dtml-if "REQUEST.get('scoId','')==''">
291   <dtml-call "REQUEST.set('scoId',id)">
292  </dtml-if>
293  <dtml-if "REQUEST.get('scoId','')==id">
294   <dtml-if href>
295    <dtml-call "REQUEST.set('scoId',id)">
296   <dtml-else>
297    <dtml-call "REQUEST.set('scoId','')">
298   </dtml-if>
299  </dtml-if>
300 </dtml-in>
301<dtml-else>
302 <!-- find next -->
303 <dtml-call "REQUEST.set('scoId',getObjProperty('getNextScoId',REQUEST,{'fetchReqBuff':0}))">
304</dtml-if>
305
306<dtml-comment>
307######################################################################
308# Display frames
309######################################################################
310</dtml-comment>
311  <dtml-var "getObjProperty(REQUEST.get(actionId,''),REQUEST)">
312
313</dtml-if>
314
315<!-- EO bodyContentZMSCustom_courseContent -->]]></item>
316<item key="enabled" type="int">0</item>
317<item key="key"><![CDATA[courseContent]]></item>
318<item key="value" type="dictionary"><dictionary>
319<item key="__obj_attrs__" type="list"><list>
320<item type="dictionary"><dictionary>
321<item key="custom"/>
322<item key="default"/>
323<item key="id"><![CDATA[titlealt]]></item>
324<item key="keys" type="list"><list>
325</list>
326</item>
327<item key="mandatory" type="int">1</item>
328<item key="multilang" type="int">1</item>
329<item key="name"><![CDATA[Title.Alt]]></item>
330<item key="repetitive" type="int">0</item>
331<item key="type"><![CDATA[string]]></item>
332</dictionary>
333</item>
334<item type="dictionary"><dictionary>
335<item key="custom" type="file">
336<data content_type="image/gif" filename="courseContent.gif" type="file">47494638396112001000b30000040204649a6464029c649a9cccce9c64666486669cfcfefc880264fcfe04fc02fccc9accbccecc9c9a649c029c9c666421f9040100000a002c000000001200100003048050c921abbdb23183bb02c84150d5f03418201cc7230506cb5d80c32e46c31e89010016d50ec0e0b1740ea044c802107689c70101582c43cd62823538080024d0f0c94a14bc8099b8b9301e74d43062752042bb49d4d211aa1e7c3f530005417d3f1a45687a573f7c0208087c718502493f979701343f0f063903060f010f1411003b</data></item>
337<item key="default"/>
338<item key="id"><![CDATA[icon]]></item>
339<item key="keys" type="list"><list>
340</list>
341</item>
342<item key="mandatory" type="int">0</item>
343<item key="multilang" type="int">0</item>
344<item key="name"><![CDATA[Icon]]></item>
345<item key="repetitive" type="int">0</item>
346<item key="type"><![CDATA[resource]]></item>
347</dictionary>
348</item>
349<item type="dictionary"><dictionary>
350<item key="custom" type="file">
351<data content_type="image/gif" filename="icon_exam.gif" type="file">47494638396112001000f700000432bc7c828cc4c2c44c4e4c0c46bce4e2e46c8acc3c66bc94aad4c4f2fc94cafc2456bc346ad4bccae44c8afc7ca6f41c56ccd4e2f4acaeacf4f2ecccd6e46c6e6c849acccceafcfcfeecacb6cc547ed4547ac43c6ed4ccdaf4bcc6dc144ac42c5ec4245ecc6c86c4648edc3466cc94aadcb4b2b47c7e7ce4eaf4fcfafc9c9a9cc4cacc5c5a5c144eb4acd6fc1c56c484aeece4e6f4ecf2fc6c727c749ae43472e4ccdefc3c6ecc0c4abca4b2cc2c66e4c4d2e46c9af41456d4dce6f494a6c4ecf2f4d4deec747674fcfaf4a4bae4d4def42c62cc7492dc346acce4eefc949aa4245ac474b2fcfc02fcbcc2cc545254dce2ec5c86dc9caed49ccefc346adcc4cee44c8efc245accdce2f4acaeb4d4daec7472747c9ed4dceafcb4bacc5c7ec44472d4d4daf4c4cadc144ec43462c42c5ecc6c8edc9caedcbcbabceceef4fcfefccccacc646264acdefc2456c494aeec7c9ee43c72e4144abcf4f2f4fcfef43c6acc9c9ea47700002000f80000620000150000002000000000000000140000000c10850000f40e00f4000077a40000c30000d60000770000180000c200001200140000000000850000f40000f400007700f0a100c2f40012f40000770200087f0006000014000000283c08c2f9001212b200000000c601004300001800007e00788701c44300121800007e008d20784ad0c4d11b12777e00a44896c34939d614e577007702ed9e7f3a390018e5007e7760840cc4930012d1b20077000d601c09c339ded6e50c77772a3800048c00926c000000002371f804836200d11500770000ec0800d20000d1b2007700acd0010a04000059000000004000480000c4000012000000904f3cdb00f9140012000000002a3c1404f916921200000000c80900c3480012e70000770700380000300000e6000077a800ff0100ff1400ff0000fff8009e1300391600e5000077002ae20004e700924100000000c8b800c3ed00121400000000d0d90004570059e500007790b81c5ec3394412e5000077345dafc2a179d6d1d177777790002a5e000444009200000006820000000000000000000021f9040100004d002c00000000120010000708fb009b081c58248c968241062a248822859a872962145948f06182365314b8785864c5c2226a2e308101650296070e6ca829b246a18c2e0ea260484144cd90383564c4505291870e11693400e0a266440f1a6ac448105824091506655e401853450d982b375204a9c0b4430806248cbcc8a0860b04232080047922104b911724485c11a106c607232140cc29c2b64991216442900861c0c78d2b245e6c48516500d31425e4183152c74c19b438c4a050c286209d2f04c6fc5073640c010b6ab0b050319042173a165a1c38b3608194d433b62c74822545811c083c4c0012e144053414b3548910010b96085e586c314151a0800a4f06687f72626140003b</data></item>
352<item key="default"/>
353<item key="id"><![CDATA[icon_exam]]></item>
354<item key="keys" type="list"><list>
355</list>
356</item>
357<item key="mandatory" type="int">0</item>
358<item key="multilang" type="int">0</item>
359<item key="name"><![CDATA[Icon: exam]]></item>
360<item key="repetitive" type="int">0</item>
361<item key="type"><![CDATA[resource]]></item>
362</dictionary>
363</item>
364<item type="dictionary"><dictionary>
365<item key="custom" type="file">
366<data content_type="image/gif" filename="icon_this.gif" type="file">47494638396110001000800100000000ffffff21f90401000001002c00000000100010000002148c8fa9cbed0fa38440824aafbe8ddb0986225300003b</data></item>
367<item key="default"/>
368<item key="id"><![CDATA[icon_this]]></item>
369<item key="keys" type="list"><list>
370</list>
371</item>
372<item key="mandatory" type="int">0</item>
373<item key="multilang" type="int">0</item>
374<item key="name"><![CDATA[Icon: this]]></item>
375<item key="repetitive" type="int">0</item>
376<item key="type"><![CDATA[resource]]></item>
377</dictionary>
378</item>
379<item type="dictionary"><dictionary>
380<item key="custom" type="file">
381<data content_type="image/gif" filename="btn_reset.gif" type="file">47494638396110001000800100000000ffffff21f90401000001002c00000000100010000002218c8fa9cbed0fa29c205576cfcddbeac079df485621d21929a9642a453df24c0705003b</data></item>
382<item key="default"/>
383<item key="id"><![CDATA[btn_reset]]></item>
384<item key="keys" type="list"><list>
385</list>
386</item>
387<item key="mandatory" type="int">0</item>
388<item key="multilang" type="int">0</item>
389<item key="name"><![CDATA[Button: reset]]></item>
390<item key="repetitive" type="int">0</item>
391<item key="type"><![CDATA[resource]]></item>
392</dictionary>
393</item>
394<item type="dictionary"><dictionary>
395<item key="custom"/>
396<item key="default"/>
397<item key="id"><![CDATA[url]]></item>
398<item key="keys" type="list"><list>
399</list>
400</item>
401<item key="mandatory" type="int">0</item>
402<item key="multilang" type="int">0</item>
403<item key="name"><![CDATA[Location of imsmanifest.xml]]></item>
404<item key="repetitive" type="int">0</item>
405<item key="type"><![CDATA[url]]></item>
406</dictionary>
407</item>
408<item type="dictionary"><dictionary>
409<item key="custom"/>
410<item key="default"/>
411<item key="id"><![CDATA[_imsmanifest]]></item>
412<item key="keys" type="list"><list>
413</list>
414</item>
415<item key="mandatory" type="int">0</item>
416<item key="multilang" type="int">1</item>
417<item key="name"><![CDATA[imsmanifest.xml (list)]]></item>
418<item key="repetitive" type="int">0</item>
419<item key="type"><![CDATA[list]]></item>
420</dictionary>
421</item>
422<item type="dictionary"><dictionary>
423<item key="custom"/>
424<item key="default"/>
425<item key="id"><![CDATA[macronav]]></item>
426<item key="keys" type="list"><list>
427<item><![CDATA[strict sequence]]></item>
428<item><![CDATA[custom sequence]]></item>
429</list>
430</item>
431<item key="mandatory" type="int">1</item>
432<item key="multilang" type="int">0</item>
433<item key="name"><![CDATA[Navigation]]></item>
434<item key="repetitive" type="int">0</item>
435<item key="type"><![CDATA[select]]></item>
436</dictionary>
437</item>
438<item type="dictionary"><dictionary>
439<item key="custom"/>
440<item key="default"/>
441<item key="id"><![CDATA[macronav_display]]></item>
442<item key="keys" type="list"><list>
443<item><![CDATA[complete]]></item>
444<item><![CDATA[folders]]></item>
445<item><![CDATA[context]]></item>
446</list>
447</item>
448<item key="mandatory" type="int">1</item>
449<item key="multilang" type="int">0</item>
450<item key="name"><![CDATA[Nav. Display]]></item>
451<item key="repetitive" type="int">0</item>
452<item key="type"><![CDATA[select]]></item>
453</dictionary>
454</item>
455<item type="dictionary"><dictionary>
456<item key="custom"/>
457<item key="default"/>
458<item key="id"><![CDATA[resetexam]]></item>
459<item key="keys" type="list"><list>
460</list>
461</item>
462<item key="mandatory" type="int">0</item>
463<item key="multilang" type="int">0</item>
464<item key="name"><![CDATA[Exam repeatable?]]></item>
465<item key="repetitive" type="int">0</item>
466<item key="type"><![CDATA[boolean]]></item>
467</dictionary>
468</item>
469<item type="dictionary"><dictionary>
470<item key="custom"/>
471<item key="default"/>
472<item key="id"><![CDATA[mandatoryexam]]></item>
473<item key="keys" type="list"><list>
474</list>
475</item>
476<item key="mandatory" type="int">0</item>
477<item key="multilang" type="int">0</item>
478<item key="name"><![CDATA[Exam mandatory?]]></item>
479<item key="repetitive" type="int">0</item>
480<item key="type"><![CDATA[boolean]]></item>
481</dictionary>
482</item>
483<item type="dictionary"><dictionary>
484<item key="custom"/>
485<item key="default"/>
486<item key="id"><![CDATA[frame_parameters]]></item>
487<item key="keys" type="list"><list>
488</list>
489</item>
490<item key="mandatory" type="int">0</item>
491<item key="multilang" type="int">0</item>
492<item key="name"><![CDATA[<b>- Frame Parameter:</b>]]></item>
493<item key="repetitive" type="int">0</item>
494<item key="type"><![CDATA[interface]]></item>
495</dictionary>
496</item>
497<item type="dictionary"><dictionary>
498<item key="custom"/>
499<item key="default"><![CDATA[90%]]></item>
500<item key="id"><![CDATA[lmsPageWidth]]></item>
501<item key="keys" type="list"><list>
502</list>
503</item>
504<item key="mandatory" type="int">1</item>
505<item key="multilang" type="int">0</item>
506<item key="name"><![CDATA[LMS Page width px]]></item>
507<item key="repetitive" type="int">0</item>
508<item key="type"><![CDATA[string]]></item>
509</dictionary>
510</item>
511<item type="dictionary"><dictionary>
512<item key="custom"/>
513<item key="default"><![CDATA[120]]></item>
514<item key="id"><![CDATA[frameTopHeight]]></item>
515<item key="keys" type="list"><list>
516</list>
517</item>
518<item key="mandatory" type="int">1</item>
519<item key="multilang" type="int">0</item>
520<item key="name"><![CDATA[Top height px]]></item>
521<item key="repetitive" type="int">0</item>
522<item key="type"><![CDATA[int]]></item>
523</dictionary>
524</item>
525<item type="dictionary"><dictionary>
526<item key="custom"/>
527<item key="default"><![CDATA[200]]></item>
528<item key="id"><![CDATA[frameLeftWidth]]></item>
529<item key="keys" type="list"><list>
530</list>
531</item>
532<item key="mandatory" type="int">1</item>
533<item key="multilang" type="int">0</item>
534<item key="name"><![CDATA[Left width px]]></item>
535<item key="repetitive" type="int">0</item>
536<item key="type"><![CDATA[int]]></item>
537</dictionary>
538</item>
539<item type="dictionary"><dictionary>
540<item key="custom"/>
541<item key="default"/>
542<item key="id"><![CDATA[frameLeftScrolling]]></item>
543<item key="keys" type="list"><list>
544<item><![CDATA[yes]]></item>
545<item><![CDATA[no]]></item>
546<item><![CDATA[auto]]></item>
547</list>
548</item>
549<item key="mandatory" type="int">1</item>
550<item key="multilang" type="int">0</item>
551<item key="name"><![CDATA[Left scrolling]]></item>
552<item key="repetitive" type="int">0</item>
553<item key="type"><![CDATA[select]]></item>
554</dictionary>
555</item>
556<item type="dictionary"><dictionary>
557<item key="custom"/>
558<item key="default"/>
559<item key="id"><![CDATA[frameBorder]]></item>
560<item key="keys" type="list"><list>
561</list>
562</item>
563<item key="mandatory" type="int">1</item>
564<item key="multilang" type="int">0</item>
565<item key="name"><![CDATA[Frame: Border]]></item>
566<item key="repetitive" type="int">0</item>
567<item key="type"><![CDATA[boolean]]></item>
568</dictionary>
569</item>
570<item type="dictionary"><dictionary>
571<item key="custom"><![CDATA[<!--// BO Frameset_Outer //-->
572
573<dtml-var standard_html_request>
574<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
575<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
576<head>
577<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
578<dtml-var headCSS>
579<title><dtml-var "getTitlealt(REQUEST)"></title>
580 </head>
581 <frameset cols="*,<dtml-var "getObjProperty('lmsPageWidth',REQUEST)">,*" border="0" frameborder="0" framespacing="0">
582  <frame id="Frame_Left" name="Frame_Left" src="about:blank" scrolling="no">
583  <frameset id="Frameset_LMSPage" name="Frameset_LMSPage" rows="<dtml-var "getObjProperty('frameTopHeight',REQUEST)">,*"
584            border="0" frameborder="<dtml-var "getObjProperty('frameBorder',REQUEST)">" framespacing="0" >
585  <frame id="Frame_Top" name="Frame_Top" src="<dtml-var "REQUEST['templateUrl']">?lang=<dtml-var lang>&<dtml-var actionId>=Frame_Top<dtml-if "REQUEST.form.has_key('scoId')">&scoId=<dtml-var "REQUEST['scoId']"></dtml-if>" scrolling="no">
586  <frame id="Frameset_Inner" name="Frameset_Inner" src="<dtml-var "REQUEST['templateUrl']">?lang=<dtml-var lang>&<dtml-var actionId>=Frameset_Inner<dtml-if "REQUEST.form.has_key('scoId')">&scoId=<dtml-var "REQUEST['scoId']"></dtml-if>" scrolling="no">
587 </frameset>
588  <frame id="Frame_Right" name="Frame_Right" src="about:blank" scrolling="no">
589</html>
590
591<!--// EO Frameset_Outer //-->]]></item>
592<item key="default"/>
593<item key="id"><![CDATA[Frameset_Outer]]></item>
594<item key="keys" type="list"><list>
595</list>
596</item>
597<item key="mandatory" type="int">0</item>
598<item key="multilang" type="int">0</item>
599<item key="name"><![CDATA[Frameset: Outer]]></item>
600<item key="repetitive" type="int">0</item>
601<item key="type"><![CDATA[method]]></item>
602</dictionary>
603</item>
604<item type="dictionary"><dictionary>
605<item key="custom"><![CDATA[<!--// BO Frame_Top //-->
606
607<dtml-var standard_html_request>
608<dtml-call "REQUEST.set('op','disableChannelDropDown')">
609<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
610<head>
611<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
612<title><dtml-var "getTitle(REQUEST)"></title>
613<dtml-var headCSS>
614<base target="_parent">
615</head>
616<dtml-var headBodytag>
617<dtml-var pageregionTop>
618</body>
619</html>
620
621<!--// EO Frame_Top //-->]]></item>
622<item key="default"/>
623<item key="id"><![CDATA[Frame_Top]]></item>
624<item key="keys" type="list"><list>
625</list>
626</item>
627<item key="mandatory" type="int">0</item>
628<item key="multilang" type="int">0</item>
629<item key="name"><![CDATA[Frame: Top]]></item>
630<item key="repetitive" type="int">0</item>
631<item key="type"><![CDATA[method]]></item>
632</dictionary>
633</item>
634<item type="dictionary"><dictionary>
635<item key="custom"><![CDATA[<!--// BO Frameset_Inner //-->
636
637<dtml-var standard_html_request>
638<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
639<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
640<head>
641<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
642  <title><dtml-var "getTitle(REQUEST)"></title>
643 </head>
644 <frameset rows="0,*" border="0" frameborder="0" framespacing="0">
645  <frame id="LMSFrame" name="LMSFrame" src="<dtml-var "REQUEST['templateUrl']">?lang=<dtml-var lang>&<dtml-var actionId>=LMSFrame<dtml-if "REQUEST.form.has_key('scoId')">&scoId=<dtml-var "REQUEST['scoId']"></dtml-if>" resize="no" scrolling="no">
646  <frameset cols="<dtml-var "getObjProperty('frameLeftWidth',REQUEST)">,*" border="0" frameborder="<dtml-var "getObjProperty('frameBorder',REQUEST)">" framespacing="1">
647   <frame id="Navigation" name="Navigation" src="about:blank" resize="yes" scrolling="<dtml-var "getObjProperty('frameLeftScrolling',REQUEST)">">
648   <frame id="Content" name="Content" src="about:blank" resize="yes" scrolling="auto">
649  </frameset>
650 </frameset>
651</html>
652
653<!--// EO Frameset_Inner //-->]]></item>
654<item key="default"/>
655<item key="id"><![CDATA[Frameset_Inner]]></item>
656<item key="keys" type="list"><list>
657</list>
658</item>
659<item key="mandatory" type="int">0</item>
660<item key="multilang" type="int">0</item>
661<item key="name"><![CDATA[Frameset: Inner]]></item>
662<item key="repetitive" type="int">0</item>
663<item key="type"><![CDATA[method]]></item>
664</dictionary>
665</item>
666<item type="dictionary"><dictionary>
667<item key="custom"><![CDATA[<!--// BO LMSFrame //-->
668
669<!--  Data Form for track -->
670<dtml-var standard_html_request>
671<html>
672<head>
673<title><dtml-var "getTitle(REQUEST)"></title>
674<script language="JavaScript">
675<!--//
676
677  // Define exception/error codes
678  var _NoError = 0;
679  var _GeneralException = 101;
680  var _GeneralInitializationFailure = 102;
681  var _AlreadyInitialized = 103;
682  var _ContentInstanceTerminated = 104;
683  var _GeneralTerminationFailure = 111;
684  var _TerminationBeforeInitialization = 112;
685  var _TerminationAfterTermination = 113;
686  var _RetrieveDataBeforeInitialization = 122;
687  var _RetrieveDataAfterTermination = 123;
688  var _StoreDataBeforeInitialization = 132;
689  var _StoreDataAfterTermination = 133;
690  var _CommitBeforeInitialization = 142;
691  var _CommitAfterInitialization = 143;
692  var _GeneralArgumentError = 201;
693  var _GeneralGetFailure = 301;
694  var _GeneralSetFailure = 351;
695  var _GeneralCommitFailure = 391;
696  var _UndefinedDataModelElement = 401;
697  var _UnimplementedDataModelElement = 402;
698  var _DataModelElementValueNotInitialized = 403;
699  var _DataModelElementIsReadOnly = 404;
700  var _DataModelElementIsWriteOnly = 405;
701  var _DataModelElementTypeMismatch = 406;
702  var _DataModelElementValueOutOfRange = 407;
703  var _DataModelDependencyNotEstablished = 408;
704  var CMIBooleanTrue = "true";
705  var CMIBooleanFalse = "false";
706  var errCode = _NoError;
707  var errDiagnostic = "";
708
709  function writeLog(s)
710  {
711    var fm = document.forms["form0"];
712    el = fm.elements["cmiScoLog"];
713    el.value = el.value + s;
714  }
715
716  function findElement(arr, element)
717  {
718    if (arr) {
719      for (var i=0;i<arr.length/2;i++) {
720        key = arr[i*2];
721        if (key==element)
722          return i*2;
723      }
724    }
725    return -1;
726  }
727
728  function getElement(arr, element)
729  {
730    value = "";
731    if (arr) {
732      if (element.indexOf("cmi.interactions.")==0)
733      {
734        var l = String("cmi.interactions.").length
735        var k = parseInt(element.substring(l,l+element.substring(l).indexOf(".")));
736        var node = element.substring(l+element.substring(l).indexOf(".")+1);
737        var i = findElement(arr,"cmi.interactions");
738        var arr2 = arr[i+1];
739        if (arr2.length > k)
740        {
741          var arr3 = arr2[k]
742          var j = findElement(arr3,node);
743          if (j >= 0)
744          {
745            value = arr3[j+1];
746          }
747        }
748      }
749      else
750      {
751        var i = findElement(arr,element);
752        if (i >= 0)
753          value = arr[i+1];
754      }
755    }
756    return value;
757  }
758 
759  function setElement(arr, element, value )
760  {
761    if (arr) {
762      if (element.indexOf("cmi.interactions.")==0)
763      {
764        var l = String("cmi.interactions.").length
765        var k = parseInt(element.substring(l,l+element.substring(l).indexOf(".")));
766        var node = element.substring(l+element.substring(l).indexOf(".")+1);
767        var i = findElement(arr,"cmi.interactions");
768        var arr2 = arr[i+1];
769        if (arr2.length<=k)
770          arr2[k] = new Array();
771        arr3 = arr2[k]
772        var j = findElement(arr3,node);
773        if (j<0)
774        {
775          j = arr3.length;
776          arr3[j] = node;
777        }
778        arr3[j+1] = value;
779      }
780      else
781      {
782        var i = findElement(arr,element);
783        if (i<0)
784          i = arr.length;
785        arr[i] = element;
786        arr[i+1] = value;
787      }
788    }
789  }
790
791  /**
792   * Initialize.
793   */
794  function Initialize(parameter )
795  {
796    writeLog("\nInitialize('"+parameter+"')");
797    if (parameter && parameter.length > 0) {
798      errCode = _InvalidArgumentError;
799      return CMIBooleanFalse;
800    }
801    <dtml-call "REQUEST.set('cmi.learner_id',AUTHENTICATED_USER)">
802    <dtml-call "REQUEST.set('cmi.learner_name',AUTHENTICATED_USER)">
803    <dtml-call "REQUEST.set('cmi.success_status','unknown')">
804    <dtml-call "REQUEST.set('cmi.completion_status','unknown')">
805    <dtml-if userObjTrack
806     ><dtml-let attrData="userObjTrack.get('data',{})"
807                dict="attrData.get(scoId,{})"
808      ><dtml-in "dict.keys()"
809       ><dtml-let element=sequence-item value="dict[element]"
810        ><dtml-if "element.find('cmi.interactions')==0"
811         ><dtml-in value
812          ><dtml-let subindex=sequence-index subdict=sequence-item
813           ><dtml-in "subdict.keys()"
814            ><dtml-let subelement=sequence-item subvalue="subdict[subelement]">
815             setElement(this.cmi,"<dtml-var element>.<dtml-var subindex>.<dtml-var subelement>","<dtml-var subvalue>");
816            </dtml-let
817           ></dtml-in
818          ></dtml-let
819         ></dtml-in
820        ><dtml-else
821         ><dtml-call "REQUEST.set( element, value)"
822        ></dtml-if
823       ></dtml-let
824      ></dtml-in
825     ></dtml-let
826    ></dtml-if
827    ><dtml-in "REQUEST.keys()"
828     ><dtml-let key=sequence-item value="REQUEST.get(key)"
829      ><dtml-if "key.find('cmi.') == 0">
830       setElement(this.cmi,"<dtml-var key>","<dtml-var value>");
831      </dtml-if
832     ></dtml-let
833    ></dtml-in>
834    this.mode = this.GetValue("cmi.mode");
835    // Return CMIBoolean-string.
836    errCode = _NoError;
837    this.initialized = true;
838    return CMIBooleanTrue;
839  }
840
841  /**
842   * Get value.
843   */
844  function GetValue( element)
845  {
846    writeLog( "\nGetValue('"+element+"')");
847    var value = ""
848    if ( element == "cmi.mode")
849    {
850      value = "normal";
851      var completion_status = getElement( this.cmi, "cmi.completion_status");
852      if ( completion_status == "completed")
853        value = "browse";
854    }
855    else if ( element == "cmi.interactions._count")
856    {
857      var arr = this.cmi;
858      var i = findElement( arr, "cmi.interactions");
859      var arr2 = arr[i+1];
860      value = arr2.length;
861    }
862    else {
863      value = getElement( this.cmi, element);
864    }
865    writeLog( "="+value);
866    return value;
867  }
868
869  /**
870   * Set value.
871   */
872  function SetValue( element, value)
873  {
874    errCode = "0";
875    errDiagnostic = "";
876    writeLog( "\nSetValue('"+element+"','"+value+"')");
877    var mode = this.GetValue( "cmi.mode");
878    if ( mode == "normal")
879      setElement( this.cmi, element, value);
880    return "true";
881  }
882
883  /**
884   * Commit.
885   */
886  function Commit(parameter )
887  {
888    writeLog("\nCommit('"+parameter+"')");
889    // Error-Code.
890    if (parameter && parameter.length > 0) {
891      errCode = _InvalidArgumentError;
892    }
893    if (errCode != _NoError) {
894      return CMIBooleanFalse;
895    }
896    // Return CMIBoolean-string.
897    errCode = _NoError;
898    return CMIBooleanTrue;
899  }
900
901  /**
902   * Terminate.
903   */
904  function Terminate( parameter)
905  {
906    writeLog( "\nTerminate('"+parameter+"')");
907    writeLog( "\ncmi.completion_status="+this.GetValue( "cmi.completion_status"));
908    writeLog( "\ncmi.success_status="+this.GetValue( "cmi.success_status"));
909    // Error-Code.
910    if ( parameter && parameter.length > 0) {
911      errCode = _InvalidArgumentError;
912    }
913    if ( errCode != _NoError) {
914      return CMIBooleanFalse;
915    }
916    // Write cmiScoXml.
917    xml = "";
918    xml += "<dictionary>\n";
919    for (var i=0;i<this.cmi.length/2;i++)
920    {
921      element = this.cmi[i*2];
922      value = this.cmi[i*2+1];
923      xml += "<item key=\"" +element+"\">";
924      if (element.indexOf("cmi.interactions")==0)
925      {
926        xml += "<list>\n";
927        for (var j=0;j<value.length;j++)
928        {
929          if (value[j]) {
930            xml += "<item>\n";
931            xml += "<dictionary>\n";
932            for (var k=0;k<value[j].length/2;k++)
933              xml += "<item key=\"" +value[j][k*2]+"\">"+value[j][k*2+1]+"</item>\n";
934            xml += "</dictionary>\n";
935            xml += "</item>\n";
936          }
937        }
938        xml += "</list>\n";
939      }
940      else
941        xml += value;
942      xml += "</item>\n";
943    }
944    xml += "</dictionary>\n";
945    // Submit form.
946    fm = document.forms["form0"];
947    fm.elements["cmiScoXml"].value = xml;
948    fm.elements["cmiScoMode"].value = this.mode;
949    fm.submit();
950    // Return CMIBoolean-string.
951    errCode = _NoError;
952    this.terminated = true;
953    return CMIBooleanTrue;
954  }
955
956  function GetLastError()
957  {
958    return errCode;
959  }
960
961  function GetErrorString(errorCode)
962  {
963    var errString = "";   
964    if (errCode==_NoError)
965      errString = "No error";
966    else if (errCode==_GeneralException)
967      errString = "General exception";
968    else if (errCode==_ServerBusy)
969      errString = "Server is busy";
970    else if (errCode==_InvalidArgumentError)
971      errString = "Invalid argument erro";
972    else if (errCode==_ElementCannotHaveChildren)
973      errString = "Element can not have children";
974    else if (errCode==_ElementIsNotAnArray)
975      errString = "Element is not an array";
976    else if (errCode==_NotInitialized)
977      errString = "Not initialized";
978    else if (errCode==_NotImplementedError)
979      errString = "Not implemented error";
980    else if (errCode==_InvalidSetValue)
981      errString = "Invalid set value";
982    else if (errCode==_ElementIsReadOnly)
983      errString = "Element is read only";
984    else if (errCode==_ElementIsWriteOnly)
985      errString = "Element is write only";
986    else if (errCode==_IncorrectDataType)
987      errString = "Incorrect data type";
988    else
989      errString = "Unknown errCode="+errCode;
990    return errString;
991  }
992
993  function GetDiagnostic(errorCode)
994  {
995    var errDiagnostic = "";   
996    if (errCode==_NoError)
997      errDiagnostic = "No error";
998    else if (errCode==_GeneralException)
999      errDiagnostic = "General Exception";
1000    else if (errCode==_GeneralInitializationFailure)
1001      errDiagnostic = "General Initialization Failure";
1002    else if (errCode==_AlreadyInitialized)
1003      errDiagnostic = "Already Initialized";
1004    else if (errCode==_ContentInstanceTerminated)
1005      errDiagnostic = "Content Instance Terminated";
1006    else if (errCode==_GeneralTerminationFailure)
1007      errDiagnostic = "General Termination Failure";
1008    else if (errCode==_TerminationBeforeInitialization)
1009      errDiagnostic = "Termination Before Initialization";
1010    else if (errCode==_TerminationAfterTermination)
1011      errDiagnostic = "Termination After Termination";
1012    else if (errCode==_RetrieveDataBeforeInitialization)
1013      errDiagnostic = "Retrieve Data Before Initialization";
1014    else if (errCode==_RetrieveDataAfterTermination)
1015      errDiagnostic = "Retrieve Data After Termination";
1016    else if (errCode==_StoreDataBeforeInitialization)
1017      errDiagnostic = "Store Data Before Initialization";
1018    else if (errCode==_StoreDataAfterTermination)
1019      errDiagnostic = "Store Data After Termination";
1020    else if (errCode==_CommitBeforeInitialization)
1021      errDiagnostic = "Commit Before Initialization";
1022    else if (errCode==_CommitAfterInitialization)
1023      errDiagnostic = "Commit After Initialization";
1024    else if (errCode==_GeneralArgumentError)
1025      errDiagnostic = "General Argument Error";
1026    else if (errCode==_GeneralGetFailure)
1027      errDiagnostic = "General Get Failure";
1028    else if (errCode==_GeneralSetFailure)
1029      errDiagnostic = "General Set Failure";
1030    else if (errCode==_GeneralCommitFailure)
1031      errDiagnostic = "General Commit Failure";
1032    else if (errCode==_UndefinedDataModelElement)
1033      errDiagnostic = "Undefined Data Model Element";
1034    else if (errCode==_UnimplementedDataModelElement)
1035      errDiagnostic = "Unimplemented Data Model Element";
1036    else if (errCode==_DataModelElementValueNotInitialized)
1037      errDiagnostic = "Data Model Element Value Not Initialized";
1038    else if (errCode==_DataModelElementIsReadOnly)
1039      errDiagnostic = "Data Model Element Is Read Only";
1040    else if (errCode==_DataModelElementIsWriteOnly)
1041      errDiagnostic = "Data Model Element Is Write Only";
1042    else if (errCode==_DataModelElementTypeMismatch)
1043      errDiagnostic = "Data Model Element Type Mismatch";
1044    else if (errCode==_DataModelElementValueOutOfRange)
1045      errDiagnostic = "Data Model Element Value Out Of Range";
1046    else if (errCode==_DataModelDependencyNotEstablished)
1047      errDiagnostic = "Data Model Dependency Not Established";
1048    else
1049      errDiagnostic = "Unknown errCode="+errCode;
1050    return errDiagnostic;
1051  }
1052
1053  function APIClass()
1054  {
1055    this.version = "1.0";
1056    this.cmi = new Array();
1057    this.cmi[this.cmi.length] = "cmi.interactions";
1058    this.cmi[this.cmi.length] = new Array();
1059    this.initialized = false;
1060    this.terminated = false;
1061    this.Initialize = Initialize;
1062    this.GetValue = GetValue;
1063    this.SetValue = SetValue;
1064    this.Commit = Commit;
1065    this.commit = Commit;
1066    this.Terminate = Terminate;
1067    this.terminate = Terminate;
1068    this.GetLastError = GetLastError;
1069    this.getLastError = GetLastError;
1070    this.GetErrorString = GetErrorString;
1071    this.getErrorString = GetErrorString;
1072    this.GetDiagnostic = GetDiagnostic;
1073    this.getDiagnostic = GetDiagnostic;
1074  }
1075
1076  function bodyOnLoad()
1077  {
1078    window.parent.API_1484_11 = new APIClass();
1079    window.parent.Navigation.location.href = "<dtml-var templateUrl>?lang=<dtml-var lang>&<dtml-var actionId>=Navigation<dtml-if "REQUEST.form.has_key('scoId')">&scoId=<dtml-var "REQUEST['scoId']"></dtml-if>";
1080    <dtml-in imsmanifest mapping>
1081     <dtml-if "REQUEST.get('scoId','')==id">
1082      <dtml-if "_['sequence-end'] and REQUEST.form.get('scoId','')=='' and userObjTrack.get('data',{}).get(id,{}).get('cmi.completion_status','unknown')=='completed'">
1083       window.parent.Content.location.href = "<dtml-var templateUrl>?lang=<dtml-var lang>&<dtml-var actionId>=Completed";
1084      <dtml-else>
1085      window.parent.Content.location.href = "<dtml-var "REQUEST.get('url','')"><dtml-var href>";
1086     </dtml-if>
1087     </dtml-if>
1088    </dtml-in>
1089  }
1090
1091-->
1092</script>
1093</head>
1094 <body onload="bodyOnLoad()">
1095  <form name="form0" method="post" action="<dtml-var templateUrl>" target="_self">
1096  <input type="hidden" name="<dtml-var actionId>" value="<dtml-var "REQUEST.get(actionId,'')">">
1097  <input type="hidden" name="lang" value="<dtml-var lang>">
1098  <input type="hidden" name="cmiScoId" value="<dtml-var scoId>">
1099  <input type="hidden" name="cmiScoMode" value="normal">
1100  <textarea name="cmiScoLog" cols="80" rows="10" wrap="off"></textarea>
1101  <textarea name="cmiScoXml" cols="80" rows="10" wrap="off"></textarea>
1102  <input type="submit" value="SUBMIT">
1103  </form>
1104 </body>
1105</html>
1106
1107<!--// EO LMSFrame //-->]]></item>
1108<item key="default"/>
1109<item key="id"><![CDATA[LMSFrame]]></item>
1110<item key="keys" type="list"><list>
1111</list>
1112</item>
1113<item key="mandatory" type="int">0</item>
1114<item key="multilang" type="int">0</item>
1115<item key="name"><![CDATA[Frame: LMS]]></item>
1116<item key="repetitive" type="int">0</item>
1117<item key="type"><![CDATA[method]]></item>
1118</dictionary>
1119</item>
1120<item type="dictionary"><dictionary>
1121<item key="custom"><![CDATA[<!--// BO Navigation //-->
1122
1123<dtml-call "RESPONSE.setHeader('Content-Type', 'text/html; charset=utf-8')">
1124<dtml-call "RESPONSE.setHeader('Cache-Control', 'no-cache')">
1125<dtml-call "RESPONSE.setHeader('Pragma', 'no-cache')">
1126<dtml-var standard_html_request>
1127<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
1128<head>
1129<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
1130<meta http-equiv="Cache-Control" content="no-cache"/>
1131<meta http-equiv="Pragma" content="no-cache"/>
1132  <dtml-var headCSS>
1133  <dtml-var headScript>
1134  <base target="_parent">
1135 </head>
1136 <body id="MacronavigationScorm">
1137  <dtml-call "REQUEST.set('targetUrl',url_append_params(REQUEST['templateUrl'],{'lang':lang,actionId:'Frameset_Inner'}))">
1138  <dtml-var "getObjProperty('getNavigation',REQUEST)">
1139 </body>
1140</html>
1141
1142<!--// EO Navigation //-->]]></item>
1143<item key="default"/>
1144<item key="id"><![CDATA[Navigation]]></item>
1145<item key="keys" type="list"><list>
1146</list>
1147</item>
1148<item key="mandatory" type="int">0</item>
1149<item key="multilang" type="int">0</item>
1150<item key="name"><![CDATA[Frame: Navigation]]></item>
1151<item key="repetitive" type="int">0</item>
1152<item key="type"><![CDATA[method]]></item>
1153</dictionary>
1154</item>
1155<item type="dictionary"><dictionary>
1156<item key="custom"><![CDATA[<!--// BO Completed //-->
1157
1158<dtml-call "RESPONSE.setHeader('Content-Type', 'text/html; charset=utf-8')">
1159<dtml-call "RESPONSE.setHeader('Cache-Control', 'no-cache')">
1160<dtml-call "RESPONSE.setHeader('Pragma', 'no-cache')">
1161<dtml-var standard_html_request>
1162<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
1163<head>
1164<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
1165<meta http-equiv="Cache-Control" content="no-cache"/>
1166<meta http-equiv="Pragma" content="no-cache"/>
1167  <dtml-var headCSS>
1168  <dtml-var headScript>
1169  <base target="_top">
1170 </head>
1171 <body id="ContentScorm">
1172  <div align="center">
1173   <form action="<dtml-var "getParentNode().getHref2IndexHtml(REQUEST)">" method="GET">
1174   <hr size="1"/>
1175   <h1>Course completed!</h1>
1176   <hr size="1"/>
1177   <input type="submit" value="<dtml-var "getLangStr('BACK',lang)">"/>
1178   </form>
1179  </div>
1180 </body>
1181</html>
1182
1183<!--// EO Completed //-->]]></item>
1184<item key="default"/>
1185<item key="id"><![CDATA[Completed]]></item>
1186<item key="keys" type="list"><list>
1187</list>
1188</item>
1189<item key="mandatory" type="int">0</item>
1190<item key="multilang" type="int">0</item>
1191<item key="name"><![CDATA[Frame: Course Completed]]></item>
1192<item key="repetitive" type="int">0</item>
1193<item key="type"><![CDATA[method]]></item>
1194</dictionary>
1195</item>
1196<item type="dictionary"><dictionary>
1197<item key="custom"><![CDATA[<!--// BO getNavigation //-->
1198<!-- IN: targetUrl -->
1199<!-- IN: userObjTrack -->
1200
1201<dtml-if "REQUEST.form.get('btn','') == 'reset'">
1202  <dtml-if userObjTrack>
1203   <dtml-call "REQUEST.set('attrData',userObjTrack.get('data',{}))">
1204   <dtml-call "REQUEST.set('l',[])">
1205   <dtml-in "attrData.keys()">
1206    <dtml-let k=sequence-item v="attrData[k]">
1207     <dtml-unless "scoId==k">
1208      <dtml-call "l.extend([k,v])">
1209     </dtml-unless>
1210    </dtml-let>
1211   </dtml-in>
1212   <dtml-call "REQUEST.set('attrData',dict_list(l))">
1213   <dtml-call "updatePersonalTrack(_,_,courseId=getHome().id+'_'+getParentNode().id[1:],attrData=attrData)">
1214   <div class="system-msg" >
1215    Exam <i><dtml-var id></i> reset!<br />(<dtml-var "getLangFmtDate(ZopeTime())">)
1216   </div>
1217  </dtml-if>
1218</dtml-if>
1219
1220<div class="navigationScorm">
1221<table cellspacing="0" cellpadding="2" border="0">
1222<dtml-call "REQUEST.set('nextScoId',getObjProperty('getNextScoId',REQUEST))">
1223<dtml-call "REQUEST.set('break',False)">
1224
1225<dtml-comment>
1226  <!-- Pre-parsing manifest to identify active SCO -->
1227</dtml-comment>
1228<dtml-call "REQUEST.set('activeScoId',None)">
1229<dtml-call "REQUEST.set('activeScoIdPathList',[])">
1230<dtml-call "REQUEST.set('activeScoParentId',None)">
1231<dtml-in "getObjProperty('_imsmanifest',REQUEST)" mapping>
1232  <dtml-if "REQUEST.form.get('scoId','')==id or
1233           (REQUEST.form.get('scoId','')=='' and nextScoId==id) ">
1234    <dtml-call "REQUEST.set('activeScoId',id)">
1235    <dtml-call "REQUEST.set('activeScoLevel',level)">
1236    <dtml-call "REQUEST.set('activeScoIdPathList',[])">
1237    <dtml-if "href is not None">
1238      <dtml-call "REQUEST.set('activeScoIdPathList',href.split('/')[:-1])">
1239    </dtml-if>
1240    <dtml-try><dtml-call "REQUEST.set('activeScoParentId',href.split('/')[-3])">
1241    <dtml-except><dtml-call "REQUEST.set('activeScoParentId',id)">
1242    </dtml-try>
1243<dtml-comment>
1244    <div style="color:#ddd;font-size:9px;" >
1245      activeScoLevel: <dtml-var activeScoLevel> |
1246      activeScoId: <dtml-var activeScoId><br />
1247      activeScoIdPathList: <dtml-var activeScoIdPathList>
1248   </div>
1249</dtml-comment>
1250  </dtml-if>
1251</dtml-in>
1252
1253<dtml-in "getObjProperty('_imsmanifest',REQUEST)" mapping>
1254  <dtml-call "REQUEST.set('display',True)">
1255  <dtml-call "REQUEST.set('attrData',{})">
1256 
1257  <dtml-if userObjTrack>
1258    <dtml-call "REQUEST.set('attrData',userObjTrack.get('data',{}))">
1259  <dtml-else>   
1260    <dtml-in sequencing_rules mapping>
1261      <dtml-if "rule_condition_op == 'not' and rule_condition == 'satisfied'">
1262        <dtml-call "REQUEST.set('display',False)">
1263      </dtml-if>
1264    </dtml-in>
1265  </dtml-if>
1266 
1267  <dtml-in sequencing_rules mapping> 
1268    <dtml-let cmiDict="attrData.get(rule_condition_ref,{})"
1269             success_status="cmiDict.get( 'cmi.success_status' ,'unknown').lower()"
1270             completion_status="cmiDict.get( 'cmi.completion_status' ,'unknown').lower()"
1271             satisfied="success_status == 'passed'"
1272             completed="completion_status == 'completed'">
1273    <dtml-if "rule_condition_op == 'not'">
1274        <dtml-call "REQUEST.set('display',REQUEST.get('display') and
1275          ( completion_status != 'unknown') and (
1276          ( rule_condition == 'satisfied' and not satisfied ) or
1277       ( rule_condition == 'completed' and not completed ) ) )">
1278      <dtml-else>
1279        <dtml-call "REQUEST.set('display',REQUEST.get('display') and (
1280          ( completion_status == 'unknown') or
1281          ( rule_condition == 'satisfied' and satisfied ) or
1282       ( rule_condition == 'completed' and completed ) ) )">
1283      </dtml-if>
1284    </dtml-let>
1285  </dtml-in>
1286 
1287  <dtml-try>
1288    <dtml-call "REQUEST.set('parentId',href.split('/')[-3])">
1289  <dtml-except>
1290    <dtml-call "REQUEST.set('parentId',id)">
1291  </dtml-try>
1292
1293  <dtml-call "REQUEST.set('scoIsInContext',level<3 or
1294                             parentId in activeScoIdPathList )">
1295  <dtml-call "REQUEST.set('scoIsSiblingOrFolder',level<3 or
1296                             learningresourcetype in ['lecture.folder'] or
1297                             parentId == activeScoParentId or 
1298                             parentId == activeScoId )">
1299
1300  <dtml-if "display and
1301            (getObjProperty('macronav_display',REQUEST)!='context' or scoIsInContext) and
1302            (getObjProperty('macronav_display',REQUEST)!='folders' or scoIsSiblingOrFolder)
1303            ">
1304
1305  <dtml-comment><!-- TF: Testing/Debugging -->
1306  <tr><td colspan="2" nowrap="nowrap" style="font-size:9px;border-top:1px dotted gray;     
1307      <dtml-if isScoInContext>background-color:green;
1308      <dtml-else>background-color:red;
1309      </dtml-if>">
1310      href: <dtml-var href>
1311      id: <dtml-var id>, parentId: <dtml-var parentId>
1312    </td></tr></dtml-comment>
1313
1314    <tr <dtml-if "id == activeScoId">class="activeSCO"</dtml-if> >
1315      <td class="navMicro" style="vertical-align:top;white-space:nowrap" >
1316
1317    <dtml-call "REQUEST.set('reset',False)">
1318    <dtml-if userObjTrack>
1319     <dtml-let attrData="userObjTrack.get('data',{})"
1320                cmiDict="attrData.get(id,{})"
1321                success_status="cmiDict.get( 'cmi.success_status' ,'unknown')"
1322                completion_status="cmiDict.get( 'cmi.completion_status' ,'unknown')">
1323      <dtml-if href>
1324       <dtml-if "completion_status in ['completed']">
1325        <dtml-if "success_status in ['failed']">
1326         <span style="color:red">f</span>
1327         <dtml-call "REQUEST.set('reset',REQUEST['reset'] or getObjProperty('resetexam',REQUEST) in [1,True])">
1328        <dtml-elif "success_status in ['passed']">
1329         <span style="color:green">+</span>
1330         <dtml-call "REQUEST.set('reset',REQUEST['reset'] or getObjProperty('resetexam',REQUEST) in [1,True])">
1331        <dtml-else>+</dtml-if>
1332       <dtml-elif "completion_status in ['incomplete']">
1333        <span style="color:yellow">-</span>
1334       <dtml-else>
1335        <span style="color:red">-</span></dtml-if>
1336      <dtml-else>&nbsp;</dtml-if>
1337     </dtml-let>
1338    </dtml-if>
1339   
1340   </td>
1341   <td style="padding-left:<dtml-var "(level-1)*8">px;">
1342   
1343    <dtml-if break>
1344      <span class="navMicro" style="color:gray"
1345       ><img src="<dtml-if "learningresourcetype in ['Exam','Self Assessment']"><dtml-var "getObjProperty('icon_exam',REQUEST).getHref(REQUEST)"><dtml-elif "learningresourcetype=='lecture.document'"><dtml-var MISC_ZMS>zmsdocument_disabled.gif<dtml-else><dtml-var MISC_ZMS>zmsfolder_disabled.gif</dtml-if>"
1346             border="0" align="absmiddle"/> <dtml-if "learningresourcetype in ['Exam','Self Assessment'] and getObjProperty('mandatoryexam',REQUEST)"><span style="color:red;font-weight:bold">!</span> </dtml-if><dtml-var title></span>
1347     <dtml-else>
1348      <a href="<dtml-var "url_append_params(REQUEST['targetUrl'],{'scoId':id})">" class="navMicro"
1349       ><img src="<dtml-if "learningresourcetype in ['Exam','Self Assessment']"><dtml-var "getObjProperty('icon_exam',REQUEST).getHref(REQUEST)"><dtml-elif "learningresourcetype=='lecture.document'"><dtml-var MISC_ZMS>ico_document.gif<dtml-else><dtml-var MISC_ZMS>ico_folder.gif</dtml-if>"
1350             border="0" align="absmiddle" /><dtml-if "learningresourcetype in ['Exam','Self Assessment'] and getObjProperty('mandatoryexam',REQUEST)"><span style="color:red;font-weight:bold">!</span> </dtml-if>
1351        <dtml-var title></a>
1352      <dtml-if "id == activeScoId">
1353       <img src="<dtml-var "getObjProperty('icon_this',REQUEST).getHref(REQUEST)">"
1354            border="0" align="absmiddle" />
1355      </dtml-if>
1356      <dtml-if reset>
1357       <dtml-if actionId>
1358        <a href="<dtml-var URL>?lang=<dtml-var lang>&<dtml-var actionId>=<dtml-var "REQUEST[actionId]">&btn=reset&scoId=<dtml-var id>" target="Navigation" class="navMicro" title="Reset!"><img src="<dtml-var "getObjProperty('btn_reset',REQUEST).getHref(REQUEST)">" title="Reset!" border="0" align="absmiddle"/></a>       
1359       </dtml-if>
1360      </dtml-if>
1361     </dtml-if>
1362   </td>
1363  </tr>
1364 </dtml-if>
1365 <dtml-call "REQUEST.set('break',REQUEST['break'] or nextScoId==id)">
1366 <dtml-call "REQUEST.set('break',REQUEST['break'] and not getObjProperty('macronav',REQUEST) in ['custom sequence'])">
1367
1368</dtml-in>
1369</table>
1370</div>
1371
1372<!--// EO getNavigation //-->]]></item>
1373<item key="default"/>
1374<item key="id"><![CDATA[getNavigation]]></item>
1375<item key="keys" type="list"><list>
1376</list>
1377</item>
1378<item key="mandatory" type="int">0</item>
1379<item key="multilang" type="int">0</item>
1380<item key="name"><![CDATA[Returns navigation TOC]]></item>
1381<item key="repetitive" type="int">0</item>
1382<item key="type"><![CDATA[method]]></item>
1383</dictionary>
1384</item>
1385<item type="dictionary"><dictionary>
1386<item key="custom"><![CDATA[<!--// BO getManifestAbsoluteUrl //-->
1387
1388<dtml-call "REQUEST.set('url',getObjProperty('url',REQUEST))">
1389<dtml-if "REQUEST['url']">
1390 <dtml-call "REQUEST.set('obj',getLinkObj(REQUEST['url'],REQUEST))">
1391 <dtml-if "REQUEST['obj']">
1392  <dtml-call "REQUEST.set('url',REQUEST['obj'].absolute_url())">
1393 </dtml-if>
1394 <dtml-unless "REQUEST['url'][-1]=='/'">
1395  <dtml-call "REQUEST.set('url',REQUEST['url']+'/')">
1396 </dtml-unless>
1397</dtml-if>
1398
1399<!--// EO getManifestAbsoluteUrl //-->]]></item>
1400<item key="default"/>
1401<item key="id"><![CDATA[getManifestAbsoluteUrl]]></item>
1402<item key="keys" type="list"><list>
1403</list>
1404</item>
1405<item key="mandatory" type="int">0</item>
1406<item key="multilang" type="int">0</item>
1407<item key="name"><![CDATA[Returns absolute url of manifest.xml]]></item>
1408<item key="repetitive" type="int">0</item>
1409<item key="type"><![CDATA[method]]></item>
1410</dictionary>
1411</item>
1412<item type="dictionary"><dictionary>
1413<item key="custom"><![CDATA[<!--// BO getPersonalTrack //-->
1414
1415 <dtml-let userObj="getPersonalProfileByEmail(_,_,userObjEmail=AUTHENTICATED_USER.getId())">
1416  <dtml-if userObj>
1417   <dtml-let userObjTrack="userObj.get('userObjTracks',{}).get(getParentNode().id,None)">
1418    <dtml-return userObjTrack>
1419   </dtml-let>
1420  </dtml-if>
1421 </dtml-let>
1422 <dtml-return "None">
1423
1424<!--// EO getPersonalTrack //-->]]></item>
1425<item key="default"/>
1426<item key="id"><![CDATA[getPersonalTrack]]></item>
1427<item key="keys" type="list"><list>
1428</list>
1429</item>
1430<item key="mandatory" type="int">0</item>
1431<item key="multilang" type="int">0</item>
1432<item key="name"><![CDATA[Returns userObjTrack]]></item>
1433<item key="repetitive" type="int">0</item>
1434<item key="type"><![CDATA[method]]></item>
1435</dictionary>
1436</item>
1437<item type="dictionary"><dictionary>
1438<item key="custom"><![CDATA[<!--// BO getNextScoId //-->
1439
1440  <dtml-call "REQUEST.set('scoId','')">
1441 
1442  <dtml-if userObjTrack>
1443  <dtml-call "REQUEST.set('break',False)">
1444   <dtml-let attrData="userObjTrack.get('data',{})">
1445    <dtml-in "getObjProperty('_imsmanifest',REQUEST)" mapping>
1446     <dtml-if href>
1447      <dtml-var sequence-item><br/>
1448      <dtml-call "REQUEST.set('display',True)">
1449      <dtml-in sequencing_rules mapping>
1450       <dtml-let cmiDict="attrData.get(rule_condition_ref,{})"
1451                 success_status="cmiDict.get( 'cmi.success_status' ,'unknown')"
1452                 completion_status="cmiDict.get( 'cmi.completion_status' ,'unknown')"
1453                 satisfied="success_status == 'passed'"
1454                 completed="completion_status == 'completed'">
1455        <dtml-if "rule_condition_op=='not'">
1456         <dtml-call "REQUEST.set('display',REQUEST.get('display') and (
1457           ( completion_status == 'unknown' ) or
1458           ( rule_condition == 'satisfied' and not satisfied ) or
1459           ( rule_condition == 'completed' and not completed ) ) )">
1460        <dtml-else>
1461         <dtml-call "REQUEST.set('display',REQUEST.get('display') and (
1462           ( completion_status == 'unknown' ) or
1463           ( rule_condition == 'satisfied' and satisfied ) or
1464           ( rule_condition == 'completed' and completed ) ) )">
1465        </dtml-if>
1466       </dtml-let>
1467      </dtml-in>
1468      <dtml-if "REQUEST['display']">
1469       <dtml-unless "REQUEST['break']">
1470        <dtml-call "REQUEST.set('break_rc',True)">
1471        <dtml-in sequencing_rules mapping>
1472         <dtml-let cmiDict="attrData.get( rule_condition_ref, {})"
1473                   success_status="cmiDict.get( 'cmi.success_status' ,'unknown')"
1474                   completion_status="cmiDict.get( 'cmi.completion_status' ,'unknown')"
1475                   satisfied="success_status == 'passed'"
1476                   completed="completion_status == 'completed'">
1477          <dtml-call "REQUEST.set( 'scoId', id)">
1478          <dtml-if "rule_condition_op=='not'">
1479           <dtml-call "REQUEST.set( 'break_rc',REQUEST.get( 'break_rc') and (
1480             ( rule_condition == 'satisfied' and not satisfied ) or
1481             ( rule_condition == 'completed' and not completed ) ) )">
1482          <dtml-else>
1483           <dtml-call "REQUEST.set( 'break_rc',REQUEST.get( 'break_rc') and (
1484             ( rule_condition == 'satisfied' and satisfied ) or
1485             ( rule_condition == 'completed' and completed ) ) )">
1486          </dtml-if>
1487         </dtml-let>
1488        </dtml-in>
1489        <dtml-if "REQUEST['break_rc']">
1490         <dtml-let cmiDict="attrData.get(id,{})"
1491                   success_status="cmiDict.get( 'cmi.success_status' ,'unknown')"
1492                   completion_status="cmiDict.get( 'cmi.completion_status' ,'unknown')">
1493          <dtml-call "REQUEST.set('scoId',id)">
1494          <dtml-call "REQUEST.set('break',(completion_status != 'completed') or (getObjProperty('mandatoryexam',REQUEST) and success_status == 'failed'))">
1495         </dtml-let>
1496        </dtml-if>
1497       </dtml-unless>
1498      </dtml-if>
1499     </dtml-if>
1500    </dtml-in>
1501    <dtml-if "REQUEST.get( 'cmiScoId', '') != '' and
1502              REQUEST.get( 'cmiScoMode', 'normal') != 'browse'">
1503     <dtml-if "attrData.get( REQUEST.get( 'cmiScoId'),{}).get( 'cmi.success_status', 'unknown') in [ 'passed', 'failed']">
1504      <dtml-call "REQUEST.set( 'scoId' ,REQUEST.get( 'cmiScoId'))">
1505     </dtml-if>
1506    </dtml-if>
1507   </dtml-let>
1508  </dtml-if>
1509  <dtml-if "REQUEST.get( 'scoId', '')==''">
1510   <dtml-in "getObjProperty( '_imsmanifest', REQUEST)" mapping>
1511    <dtml-if "REQUEST.get( 'scoId', '')==''">
1512     <dtml-call "REQUEST.set( 'scoId', id)">
1513    </dtml-if>
1514    <dtml-if "REQUEST.get( 'scoId', '')==id">
1515     <dtml-if sequence-end>
1516     <dtml-if href>
1517      <dtml-call "REQUEST.set( 'scoId', id)">
1518     <dtml-else>
1519      <dtml-call "REQUEST.set( 'scoId', '')">
1520     </dtml-if>
1521     <dtml-else>
1522      <dtml-call "REQUEST.set( 'scoId', '<EOF>')">
1523    </dtml-if>
1524    </dtml-if>
1525   </dtml-in>
1526  </dtml-if>
1527  <dtml-return "REQUEST['scoId']">
1528
1529<!--// EO getNextScoId //-->]]></item>
1530<item key="default"/>
1531<item key="id"><![CDATA[getNextScoId]]></item>
1532<item key="keys" type="list"><list>
1533</list>
1534</item>
1535<item key="mandatory" type="int">0</item>
1536<item key="multilang" type="int">0</item>
1537<item key="name"><![CDATA[Returns Id of next unattempted SCO]]></item>
1538<item key="repetitive" type="int">0</item>
1539<item key="type"><![CDATA[method]]></item>
1540</dictionary>
1541</item>
1542<item type="dictionary"><dictionary>
1543<item key="custom"><![CDATA[<!--// BO postTrack //-->
1544
1545<dtml-if cmiScoId>
1546 <dtml-if userObjTrack>
1547  <dtml-comment>
1548  *** Get LMS-values. ***
1549  </dtml-comment>
1550  <dtml-call "REQUEST.set('attrData',userObjTrack.get('data',{}))">
1551  <dtml-call "REQUEST.set('cmiDict',attrData.get(cmiScoId,{}))">
1552  <dtml-comment>
1553  *** Reset LMS-values. ***
1554  </dtml-comment>
1555  <dtml-if "cmiDict.get( 'cmi.success_status' ,'unknown').lower() == 'failed' and
1556            cmiDict.get( 'cmi.completion_status' ,'unknown').lower() == 'completed' and
1557            getObjProperty('mandatoryexam',REQUEST) in [1,True]">
1558   <dtml-call "operator_setitem(attrData,cmiScoId,{})">   
1559  <dtml-comment>
1560  *** Apply LMS-values. ***
1561  </dtml-comment>
1562  <dtml-else>
1563  <dtml-call "REQUEST.set('LMSValues',parseXmlString('<?xml version='+_.chr(34)+'1.0'+_.chr(34)+' encoding='+_.chr(34)+'ISO-8859-1'+_.chr(34)+'?>'+REQUEST.get('cmiScoXml','')))">
1564  <dtml-in "LMSValues.keys()">
1565   <dtml-let key=sequence-item>
1566     <dtml-call "operator_setitem(cmiDict,key,LMSValues[key])">
1567   </dtml-let>
1568  </dtml-in>
1569   <dtml-call "operator_setitem(attrData,cmiScoId,cmiDict)">
1570  </dtml-if>
1571  <dtml-comment>
1572  *** Update personal-track. ***
1573  </dtml-comment>
1574  courseId=<dtml-var "getHome().id+'_'+getParentNode().id[1:]">
1575  attrData=<dtml-var attrData>
1576  <dtml-call "updatePersonalTrack(_,_,courseId=getHome().id+'_'+getParentNode().id[1:],attrData=attrData)">
1577  <dtml-comment>
1578  *** Trigger course-completed event. ***
1579  </dtml-comment>
1580  <dtml-if "cmiDict.get( 'cmi.completion_status','unknown').lower() == 'completed' and cmiScoId==imsmanifest[-1]['id']">
1581   <dtml-call "getObjProperty('onCourseCompletedEvt',REQUEST)">
1582  </dtml-if>
1583 </dtml-if>
1584</dtml-if>
1585
1586<!--// EO postTrack //-->]]></item>
1587<item key="default"/>
1588<item key="id"><![CDATA[postTrack]]></item>
1589<item key="keys" type="list"><list>
1590</list>
1591</item>
1592<item key="mandatory" type="int">0</item>
1593<item key="multilang" type="int">0</item>
1594<item key="name"><![CDATA[Post data to track]]></item>
1595<item key="repetitive" type="int">0</item>
1596<item key="type"><![CDATA[method]]></item>
1597</dictionary>
1598</item>
1599<item type="dictionary"><dictionary>
1600<item key="custom"><![CDATA[<!--// BO onChangeObjEvt //-->
1601
1602<dtml-call "REQUEST.set('url',getObjProperty('url',REQUEST))">
1603<dtml-if "REQUEST['url']">
1604 <dtml-call "REQUEST.set('bk_lang',REQUEST['lang'])">
1605 <dtml-in "getLangIds()">
1606  <dtml-call "REQUEST.set('lang',_['sequence-item'])">
1607 <dtml-call "REQUEST.set('obj',getLinkObj(REQUEST['url'],REQUEST))">
1608 <dtml-if "REQUEST['obj'] is not None">
1609  <dtml-with "REQUEST['obj']">
1610   <dtml-if "'imsmanifest.xml' in objectIds(['File'])">
1611    <dtml-call "REQUEST.set('imsmanifest',str(_['imsmanifest.xml']))">
1612   <dtml-else>
1613    <dtml-call "REQUEST.set('imsmanifest',getIMSManifest(REQUEST))">
1614   </dtml-if>
1615  </dtml-with>
1616 <dtml-else>
1617  <dtml-unless "REQUEST['url'][-1]=='/'">
1618   <dtml-call "REQUEST.set('url',REQUEST['url']+'/')">
1619  </dtml-unless>
1620  <dtml-call "REQUEST.set('imsmanifest',http_import(REQUEST['url']+'imsmanifest.xml'))">
1621 </dtml-if>
1622 <dtml-call "setObjProperty('_imsmanifest',parseIMSManifest(REQUEST['imsmanifest']),REQUEST['lang'])">
1623 </dtml-in>
1624 <dtml-call "REQUEST.set('lang',REQUEST['bk_lang'])">
1625</dtml-if>
1626
1627<!--// EO onChangeObjEvt //-->]]></item>
1628<item key="default"/>
1629<item key="id"><![CDATA[onChangeObjEvt]]></item>
1630<item key="keys" type="list"><list>
1631</list>
1632</item>
1633<item key="mandatory" type="int">0</item>
1634<item key="multilang" type="int">0</item>
1635<item key="name"><![CDATA[Event: Change]]></item>
1636<item key="repetitive" type="int">0</item>
1637<item key="type"><![CDATA[method]]></item>
1638</dictionary>
1639</item>
1640<item type="dictionary"><dictionary>
1641<item key="custom"><![CDATA[<!--// BO onCourseCompletedEvt //-->
1642
1643<!--// EO onCourseCompletedEvt //-->]]></item>
1644<item key="default"/>
1645<item key="id"><![CDATA[onCourseCompletedEvt]]></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[Event: Course Completed]]></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 bodyContent //-->
1658
1659<h2 style="vertical-align:bottom">
1660<dtml-let icon="getObjProperty('icon',REQUEST)">
1661  <dtml-if icon>
1662    <img src="<dtml-var "icon.getHref(REQUEST)">" title="<dtml-var "getTitlealt(REQUEST)">" border="0" align="top" />
1663  </dtml-if>
1664</dtml-let>
1665<dtml-var "getTitlealt(REQUEST)"></h2>
1666
1667  <div class="secondColorLight">
1668   <dtml-if "getObjProperty('_imsmanifest',REQUEST)">
1669    <dtml-try>
1670     <dtml-call "REQUEST.set('userObjTrack',getObjProperty('getPersonalTrack',REQUEST))">
1671     <dtml-call "REQUEST.set('targetUrl',getHref2IndexHtml(REQUEST))">
1672     <dtml-var "getObjProperty('getNavigation',REQUEST)">
1673    <dtml-except>
1674     <font style="color:red;">Exception!</font>
1675    </dtml-try>
1676   <dtml-else>
1677    <font style="color:red;">Course not assigned!</font>
1678   </dtml-if>
1679  </div>
1680
1681<!--// EO bodyContent //-->]]></item>
1682<item key="default"/>
1683<item key="id"><![CDATA[bodyContent]]></item>
1684<item key="keys" type="list"><list>
1685</list>
1686</item>
1687<item key="mandatory" type="int">0</item>
1688<item key="multilang" type="int">0</item>
1689<item key="name"><![CDATA[Body content]]></item>
1690<item key="repetitive" type="int">0</item>
1691<item key="type"><![CDATA[method]]></item>
1692</dictionary>
1693</item>
1694</list>
1695</item>
1696<item key="access" type="dictionary"><dictionary>
1697<item key="delete" type="list"><list>
1698<item><![CDATA[ZMSAdministrator]]></item>
1699<item><![CDATA[ZMSAuthor]]></item>
1700<item><![CDATA[ZMSEditor]]></item>
1701</list>
1702</item>
1703<item key="delete_custom"><![CDATA[<dtml-return "True">]]></item>
1704<item key="edit" type="list"><list>
1705<item><![CDATA[ZMSAdministrator]]></item>
1706<item><![CDATA[ZMSAuthor]]></item>
1707<item><![CDATA[ZMSEditor]]></item>
1708</list>
1709</item>
1710<item key="edit_custom"><![CDATA[<dtml-return "True">]]></item>
1711<item key="insert" type="list"><list>
1712<item><![CDATA[ZMSAdministrator]]></item>
1713<item><![CDATA[ZMSAuthor]]></item>
1714<item><![CDATA[ZMSEditor]]></item>
1715</list>
1716</item>
1717<item key="insert_custom"><![CDATA[<dtml-return "True">]]></item>
1718</dictionary>
1719</item>
1720<item key="acquired" type="int">0</item>
1721<item key="name"><![CDATA[Course-Content]]></item>
1722<item key="package"><![CDATA[com.zms.elc.lms]]></item>
1723<item key="type"><![CDATA[ZMSDocument]]></item>
1724</dictionary>
1725</item>
1726</dictionary>
1727</item>
1728<item type="dictionary"><dictionary>
1729<item key="dtml"><![CDATA[<!-- BO bodyContentZMSCustom_userObjSCA -->
1730
1731
1732<!-- EO bodyContentZMSCustom_userObjSCA -->]]></item>
1733<item key="enabled" type="int">1</item>
1734<item key="key"><![CDATA[userObjSCA]]></item>
1735<item key="value" type="dictionary"><dictionary>
1736<item key="__obj_attrs__" type="list"><list>
1737<item type="dictionary"><dictionary>
1738<item key="custom"><![CDATA[<!--// BO getPersonalProfileById //-->
1739<!--// @param userObjId  //-->
1740
1741 <dtml-in "getDocumentElement().filteredTreeNodes(REQUEST,'userObj')">
1742  <dtml-if "id == userObjId">
1743   <dtml-let l="[]">
1744    <dtml-call "l.extend(['id',id])">
1745    <dtml-call "l.extend(['index_html',url_append_params(getHref2IndexHtml(REQUEST,deep=0),{'ACTION%s'%meta_id:'manageProfile'})])">
1746    <dtml-in "getMetaobjAttrIds(meta_id)">
1747     <dtml-let key=sequence-item metaObjAttr="getMetaobjAttr(meta_id,key)">
1748      <dtml-if "metaObjAttr['type'] in ['boolean','string','text','select']">
1749       <dtml-call "l.extend([key,getObjProperty(key,REQUEST)])">
1750      </dtml-if>
1751     </dtml-let>
1752    </dtml-in>
1753    <dtml-let m="[]">
1754     <dtml-in "getObjChildren('userObjTracks',REQUEST)">
1755      <dtml-let n="[]">
1756       <dtml-call "n.extend(['ref',getObjProperty('attrRef',REQUEST)])">
1757       <dtml-call "n.extend(['data',getObjProperty('attrData',REQUEST)])">
1758       <dtml-call "n.extend(['creation_dt',getObjProperty('attrCreationDt',REQUEST)])">
1759       <dtml-call "m.extend([getObjProperty('attrRef',REQUEST).split('/')[-2],dict_list(n)])">
1760      </dtml-let>
1761     </dtml-in>
1762     <dtml-call "l.extend(['userObjTracks',dict_list(m)])">
1763    </dtml-let>
1764    <dtml-return "dict_list(l)">
1765   </dtml-let>
1766  </dtml-if>
1767 </dtml-in>
1768 <dtml-return "None">
1769
1770<!--// EO getPersonalProfileById //-->]]></item>
1771<item key="default"/>
1772<item key="id"><![CDATA[getPersonalProfileById]]></item>
1773<item key="keys" type="list"><list>
1774</list>
1775</item>
1776<item key="mandatory" type="int">0</item>
1777<item key="multilang" type="int">0</item>
1778<item key="name"><![CDATA[Returns personal profile by id]]></item>
1779<item key="repetitive" type="int">0</item>
1780<item key="type"><![CDATA[DTML Method]]></item>
1781</dictionary>
1782</item>
1783<item type="dictionary"><dictionary>
1784<item key="custom"><![CDATA[<!--// BO getPersonalProfileByEmail //-->
1785<!--// @param userObjEmail  //-->
1786
1787 <dtml-in "getDocumentElement().filteredTreeNodes(REQUEST,'userObj')">
1788  <dtml-if "getObjProperty('profileEmail',REQUEST) == userObjEmail">
1789   <dtml-let l="[]">
1790    <dtml-call "l.extend(['id',id])">
1791    <dtml-call "l.extend(['index_html',url_append_params(getHref2IndexHtml(REQUEST,deep=0),{'ACTION%s'%meta_id:'manageProfile'})])">
1792    <dtml-in "getMetaobjAttrIds(meta_id)">
1793     <dtml-let key=sequence-item metaObjAttr="getMetaobjAttr(meta_id,key)">
1794      <dtml-if "metaObjAttr['type'] in ['boolean','string','text']">
1795       <dtml-call "l.extend([key,getObjProperty(key,REQUEST)])">
1796      </dtml-if>
1797     </dtml-let>
1798    </dtml-in>
1799    <dtml-let m="[]">
1800     <dtml-in "getObjChildren('userObjTracks',REQUEST)">
1801      <dtml-let n="[]">
1802       <dtml-call "n.extend(['ref',getObjProperty('attrRef',REQUEST)])">
1803       <dtml-call "n.extend(['data',getObjProperty('attrData',REQUEST)])">
1804       <dtml-call "n.extend(['creation_dt',getObjProperty('attrCreationDt',REQUEST)])">
1805       <dtml-call "m.extend([getObjProperty('attrRef',REQUEST).split('/')[-2],dict_list(n)])">
1806      </dtml-let>
1807     </dtml-in>
1808     <dtml-call "l.extend(['userObjTracks',dict_list(m)])">
1809    </dtml-let>
1810    <dtml-return "dict_list(l)">
1811   </dtml-let>
1812  </dtml-if>
1813 </dtml-in>
1814 <dtml-return "None">
1815
1816<!--// EO getPersonalProfileByEmail //-->]]></item>
1817<item key="default"/>
1818<item key="id"><![CDATA[getPersonalProfileByEmail]]></item>
1819<item key="keys" type="list"><list>
1820</list>
1821</item>
1822<item key="mandatory" type="int">0</item>
1823<item key="multilang" type="int">0</item>
1824<item key="name"><![CDATA[Returns personal profile by email]]></item>
1825<item key="repetitive" type="int">0</item>
1826<item key="type"><![CDATA[DTML Method]]></item>
1827</dictionary>
1828</item>
1829<item type="dictionary"><dictionary>
1830<item key="custom"><![CDATA[<!--// BO getPersonalProfiles //-->
1831
1832<dtml-let rtn="[]">
1833 <dtml-in "getDocumentElement().filteredTreeNodes(REQUEST,'userObj')">
1834  <dtml-let l="[]">
1835   <dtml-call "l.extend(['id',id])">
1836   <dtml-in "getMetaobjAttrIds(meta_id)">
1837    <dtml-let key=sequence-item metaObjAttr="getMetaobjAttr(meta_id,key)">
1838     <dtml-if "metaObjAttr['type'] in ['boolean','string','text','select']">
1839      <dtml-call "l.extend([key,getObjProperty(key,REQUEST)])">
1840     </dtml-if>
1841    </dtml-let>
1842   </dtml-in>
1843   <dtml-call "rtn.append(dict_list(l))">
1844  </dtml-let>
1845 </dtml-in>
1846 <dtml-return rtn>
1847</dtml-let>
1848
1849<!--// EO getPersonalProfiles //-->]]></item>
1850<item key="default"/>
1851<item key="id"><![CDATA[getPersonalProfiles]]></item>
1852<item key="keys" type="list"><list>
1853</list>
1854</item>
1855<item key="mandatory" type="int">0</item>
1856<item key="multilang" type="int">0</item>
1857<item key="name"><![CDATA[Returns personal profiles]]></item>
1858<item key="repetitive" type="int">0</item>
1859<item key="type"><![CDATA[DTML Method]]></item>
1860</dictionary>
1861</item>
1862<item type="dictionary"><dictionary>
1863<item key="custom"><![CDATA[<!--// BO insertPersonalTrack //-->
1864<!--// @param titlealt        //-->
1865<!--// @param attrRef         //-->
1866
1867 <dtml-in "getDocumentElement().filteredTreeNodes(REQUEST,'userObj')">
1868  <dtml-if "getObjProperty('profileEmail',REQUEST) == AUTHENTICATED_USER.getId()">
1869   <dtml-call "REQUEST.set('userObjTrack',manage_addZMSCustom('userObjTrack',
1870    {'id_prefix':'userObjTracks'
1871    ,'titlealt':titlealt
1872    ,'attrRef':attrRef
1873    ,'attrData':{}
1874    ,'attrCreationDt':ZopeTime()
1875    },REQUEST))">
1876  </dtml-if>
1877 </dtml-in>
1878
1879<!--// EO insertPersonalTrack //-->]]></item>
1880<item key="default"/>
1881<item key="id"><![CDATA[insertPersonalTrack]]></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[INSERT Personal-Track]]></item>
1888<item key="repetitive" type="int">0</item>
1889<item key="type"><![CDATA[DTML Method]]></item>
1890</dictionary>
1891</item>
1892<item type="dictionary"><dictionary>
1893<item key="custom"><![CDATA[<!--// BO deletePersonalTrack //-->
1894<!--// @param attrRef         //-->
1895
1896 <dtml-in "getDocumentElement().filteredTreeNodes(REQUEST,'userObj')">
1897  <dtml-if "getObjProperty('profileEmail',REQUEST) == AUTHENTICATED_USER.getId()">
1898   <dtml-call "REQUEST.set('ids',[])">
1899   <dtml-in "getObjChildren('userObjTracks',REQUEST)">
1900    <dtml-if "getObjProperty('attrRef',REQUEST)==attrRef">
1901     <dtml-call "ids.append(id)">
1902    </dtml-if>
1903   </dtml-in>
1904   <dtml-call "delRefByObjs(ids=ids)">
1905   <dtml-call "manage_delObjects(ids=ids)">
1906  </dtml-if>
1907 </dtml-in>
1908
1909<!--// EO deletePersonalTrack //-->]]></item>
1910<item key="default"/>
1911<item key="id"><![CDATA[deletePersonalTrack]]></item>
1912<item key="keys" type="list"><list>
1913</list>
1914</item>
1915<item key="mandatory" type="int">0</item>
1916<item key="multilang" type="int">0</item>
1917<item key="name"><![CDATA[DELETE Personal-Track]]></item>
1918<item key="repetitive" type="int">0</item>
1919<item key="type"><![CDATA[DTML Method]]></item>
1920</dictionary>
1921</item>
1922<item type="dictionary"><dictionary>
1923<item key="custom"><![CDATA[<!--// BO updatePersonalTrack //-->
1924<!--// @param courseId        //-->
1925<!--// @param attrData        //-->
1926
1927<dtml-in "getDocumentElement().filteredTreeNodes(REQUEST,'userObj')">
1928 <dtml-if "getObjProperty('profileEmail',REQUEST) == AUTHENTICATED_USER.getId()">
1929  <dtml-in "getObjChildren('userObjTracks',REQUEST)">
1930   <dtml-if "'e'+courseId[courseId.find('_')+1:] in getObjProperty('attrRef',REQUEST).split('/')">
1931    <dtml-call "setObjStateModified(REQUEST)">
1932    <dtml-call "setObjProperty('attrData',attrData,lang)">
1933    <dtml-call "onChangeObj(REQUEST)">
1934   </dtml-if>
1935  </dtml-in>
1936 </dtml-if>
1937</dtml-in>
1938
1939<!--// EO updatePersonalTrack //-->]]></item>
1940<item key="default"/>
1941<item key="id"><![CDATA[updatePersonalTrack]]></item>
1942<item key="keys" type="list"><list>
1943</list>
1944</item>
1945<item key="mandatory" type="int">0</item>
1946<item key="multilang" type="int">0</item>
1947<item key="name"><![CDATA[UPDATE Personal-Track]]></item>
1948<item key="repetitive" type="int">0</item>
1949<item key="type"><![CDATA[DTML Method]]></item>
1950</dictionary>
1951</item>
1952<item type="dictionary"><dictionary>
1953<item key="custom"><![CDATA[<!--// BO insertPersonalProfile //-->
1954
1955<dtml-with membersFldr>
1956 <dtml-call "REQUEST.set('userObj',manage_addZMSCustom(ZMS_INSERT,
1957   {'active':1
1958   ,'attr_active_start':ZopeTime()
1959   ,'profileLastname':REQUEST['profileLastname']
1960   ,'profileFirstname':REQUEST['profileFirstname']
1961   ,'profileAcademic':REQUEST.get('profileAcademic','')
1962   ,'profileSalutation':REQUEST.get('profileSalutation','')
1963   ,'profileProfession':REQUEST.get('profileProfession','')
1964   ,'profileDiscipline':REQUEST.get('profileDiscipline','')
1965   ,'profileCompany':REQUEST.get('profileCompany','')
1966   ,'profileStreet':REQUEST.get('profileStreet','')
1967   ,'profileZip':REQUEST.get('profileZip','')
1968   ,'profileCity':REQUEST.get('profileCity','')
1969   ,'profileCountry':REQUEST.get('profileCountry','')
1970   ,'profileTel':REQUEST.get('profileTel','')
1971   ,'profileFax':REQUEST.get('profileFax','')
1972   ,'profileEmail':REQUEST['profileEmail']
1973   ,'profileWWW':REQUEST.get('profileWWW','')
1974   ,'profilePublic':REQUEST.get('profilePublic',0)
1975   ,'profileRole':REQUEST['profileRole']
1976   ,'profilePasswd':REQUEST['profilePasswd']
1977   },REQUEST))">
1978</dtml-with>
1979
1980<!--// EO insertPersonalProfile //-->]]></item>
1981<item key="default"/>
1982<item key="id"><![CDATA[insertPersonalProfile]]></item>
1983<item key="keys" type="list"><list>
1984</list>
1985</item>
1986<item key="mandatory" type="int">0</item>
1987<item key="multilang" type="int">0</item>
1988<item key="name"><![CDATA[INSERT Personal-Profile]]></item>
1989<item key="repetitive" type="int">0</item>
1990<item key="type"><![CDATA[DTML Method]]></item>
1991</dictionary>
1992</item>
1993<item type="dictionary"><dictionary>
1994<item key="custom"><![CDATA[<!--// BO deletePersonalProfile //-->
1995
1996<dtml-with membersFldr>
1997</dtml-with>
1998
1999<!--// EO deletePersonalProfile //-->]]></item>
2000<item key="default"/>
2001<item key="id"><![CDATA[deletePersonalProfile]]></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[DELETE Personal-Profile]]></item>
2008<item key="repetitive" type="int">0</item>
2009<item key="type"><![CDATA[DTML Method]]></item>
2010</dictionary>
2011</item>
2012<item type="dictionary"><dictionary>
2013<item key="custom"><![CDATA[<!--// BO updatePersonalProfile //-->
2014
2015<dtml-with membersFldr>
2016</dtml-with>
2017
2018<!--// EO updatePersonalProfile //-->]]></item>
2019<item key="default"/>
2020<item key="id"><![CDATA[updatePersonalProfile]]></item>
2021<item key="keys" type="list"><list>
2022</list>
2023</item>
2024<item key="mandatory" type="int">0</item>
2025<item key="multilang" type="int">0</item>
2026<item key="name"><![CDATA[UPDATE Personal-Profile]]></item>
2027<item key="repetitive" type="int">0</item>
2028<item key="type"><![CDATA[DTML Method]]></item>
2029</dictionary>
2030</item>
2031</list>
2032</item>
2033<item key="access" type="dictionary"><dictionary>
2034<item key="edit" type="list"><list>
2035</list>
2036</item>
2037<item key="insert" type="list"><list>
2038</list>
2039</item>
2040</dictionary>
2041</item>
2042<item key="acquired" type="int">0</item>
2043<item key="name"><![CDATA[Personal-Profile SCORM Adapter]]></item>
2044<item key="package"><![CDATA[com.zms.elc.lms]]></item>
2045<item key="type"><![CDATA[ZMSLibrary]]></item>
2046</dictionary>
2047</item>
2048</dictionary>
2049</item>
2050<item type="dictionary"><dictionary>
2051<item key="dtml"><![CDATA[<!-- BO bodyContentZMSCustom_courseMembers -->
2052
2053<dtml-comment>
2054##########################################################################################
2055# Author:   Dr.Frank Hoffmann <fh@hoffmannliebenberg.de>
2056# Company:  HOFFMANN+LIEBENBERG GmbH
2057# WWW:      http://www.hoffmannliebenberg.de
2058# Date:     10.06.2007
2059# Version:  1.1.0
2060# Comments: ZMS eLearning components.
2061##########################################################################################
2062</dtml-comment>
2063
2064<dtml-var "getObjProperty('initReq',REQUEST)">
2065
2066<dtml-in "getParentNode().filteredChildNodes(REQUEST,['ZMSCustom'])">
2067<dtml-if "meta_id=='courseContent'"><dtml-call "REQUEST.set('courseContent',_['sequence-item'])"></dtml-if>
2068</dtml-in>
2069
2070<dtml-if "REQUEST.get(actionId,'') in ['LoginRegister']">
2071
2072 <dtml-call "SESSION.set('sessionRefObjPath',getRefObjPath(getParentNode()))">
2073 <dtml-call "RESPONSE.redirect(getParentNode().absolute_url()+'/manage_login?lang='+lang+'&manage_tabs_message=LoginRegister')">
2074
2075<dtml-elif "REQUEST.get(actionId,'') in ['displayPersonalProfile','displayPersonalTrack']">
2076
2077 <dtml-var "getObjProperty(REQUEST.get(actionId,''),REQUEST)">
2078
2079<dtml-else>
2080
2081<!--//  Init object children //-->
2082<dtml-var "getObjProperty('initObjChildren',REQUEST)">
2083
2084<dtml-call "REQUEST.set('userObjs',REQUEST.get('userObjs',getPersonalProfiles(_,_)))">
2085<dtml-call "REQUEST.set('userObj',getPersonalProfileByEmail(_,_,userObjEmail=AUTHENTICATED_USER.getId()))">
2086
2087<!--// BO Register/Unregister //-->
2088<dtml-if member>
2089<dtml-call "REQUEST.set('titlealt',getParentNode().getTitlealt(REQUEST))">
2090<dtml-call "REQUEST.set('attrRef','{$%s}'%this().relative_obj_path())">
2091<dtml-if "REQUEST.get(actionId,'') == 'Register' or REQUEST.get('manage_tabs_message','')=='LoginRegister'">
2092 <dtml-unless "userObj['id'] in memberIds">
2093  <dtml-call "insertPersonalTrack(_,_,attrRef=attrRef,titlealt=titlealt)">
2094  <dtml-call "memberIds.append(userObj['id'])">
2095  <dtml-call "REQUEST.set('ids','')">
2096  <dtml-in memberIds>
2097   <dtml-let memberId=sequence-item>
2098    <dtml-call "REQUEST.set('ids',ids+memberId+'\n')">
2099   </dtml-let>
2100  </dtml-in>
2101  <dtml-call "setObjStateModified(REQUEST)">
2102  <dtml-call "setObjProperty('memberIds',ids,lang)">
2103  <dtml-call "onChangeObj(REQUEST)">
2104  <dtml-call "getObjProperty('onChangeObjEvt',REQUEST,{'fetchReqBuff':0})">
2105  <!--// Return with message //-->
2106 <dtml-comment>
2107   <dtml-call "RESPONSE.redirect(getParentNode().absolute_url()+'?lang='+lang+'&manage_tabs_message='+url_quote(getLangStr('LMS_COURSE_REG_OK',lang)+'!'))">
2108 </dtml-comment>
2109 </dtml-unless>
2110 <dtml-if courseContent>
2111   <dtml-call "RESPONSE.redirect(courseContent.getHref2IndexHtml(REQUEST)+'?lang='+lang+'&manage_tabs_message='+url_quote(getLangStr('LMS_COURSE_REG_OK',lang)+'!'))">
2112 </dtml-if>
2113<dtml-elif "REQUEST.get(actionId,'') == 'Unregister'">
2114 <dtml-if "userObj['id'] in memberIds">
2115  <dtml-call "writeLog('[deletePersonalTrack]: attrRef=%s'%attrRef)">
2116  <dtml-call "deletePersonalTrack(_,_,attrRef=attrRef)">
2117  <dtml-call "memberIds.remove(userObj['id'])">
2118  <dtml-call "REQUEST.set('ids','')">
2119  <dtml-in memberIds>
2120   <dtml-let memberId=sequence-item>
2121    <dtml-call "REQUEST.set('ids',ids+memberId+'\n')">
2122   </dtml-let>
2123  </dtml-in>
2124  <dtml-call "setObjStateModified(REQUEST)">
2125  <dtml-call "setObjProperty('memberIds',ids,lang)">
2126  <dtml-call "onChangeObj(REQUEST)">
2127  <dtml-call "getObjProperty('onChangeObjEvt',REQUEST,{'fetchReqBuff':0})">
2128  <!--// Return with message //-->
2129  <dtml-call "RESPONSE.redirect(getParentNode().absolute_url()+'/manage_login?lang='+lang+'&manage_tabs_message='+url_quote(getLangStr('LMS_COURSE_UNREG_OK',lang)+'!'))">
2130 </dtml-if>
2131</dtml-if>
2132</dtml-if>
2133<!--// EO Register/Unregister //-->
2134
2135
2136<!--// BO Display registered members //-->
2137<p><strong><dtml-var "len(memberIds)"> <dtml-var "getLangStr('LMS_REG_MEMBERS',lang)"></strong></p>
2138<dtml-if "userObj is not None and userObj['id'] in memberIds">
2139<ol>
2140<dtml-in memberIds>
2141 <dtml-let memberId=sequence-item>
2142  <dtml-in "filter_list(userObjs,'id',memberId,'==')" mapping>
2143   <li class="navMicro">
2144    <dtml-if "userObj['id']==id">
2145     <dtml-var profileFirstname> <dtml-var profileLastname> &raquo;<a href="<dtml-var "courseMembers.getHref2IndexHtml(REQUEST)">?<dtml-var actionId>=displayPersonalTrack&ref=<dtml-var id>" class="navMicro"><dtml-var "getLangStr('LMS_PERSONAL_TRACK',lang)"></a>
2146    <dtml-elif "userObj['profilePublic'] and profilePublic">
2147     <dtml-var profileFirstname> <dtml-var profileLastname> &raquo;<a href="<dtml-var "courseMembers.getHref2IndexHtml(REQUEST)">?<dtml-var actionId>=displayPersonalProfile&ref=<dtml-var id>" class="navMicro"><dtml-var "getLangStr('LMS_PERSONAL_PROFILE',lang)"></a>
2148    <dtml-else>
2149     N.N.
2150    </dtml-if>
2151   </li>
2152  </dtml-in>
2153 </dtml-let>
2154</dtml-in>
2155</ol>
2156</dtml-if>
2157<!--// EO Display registered members //-->
2158
2159
2160<!--// BO Display registration options //-->
2161<div class="teaserColor" style="padding:2px">
2162<div class="primColorLight0" style="padding:2px">
2163<dtml-if "userObj is not None and userObj['id'] in memberIds">
2164 &raquo; <a style="text-decoration:none;font-weight:bold"
2165  href="<dtml-var absolute_url>?lang=<dtml-var lang>&<dtml-var actionId>=Unregister"><dtml-var "getLangStr('LMS_COURSE_UNREG',lang)"></a><br />
2166<dtml-elif member>
2167 &raquo; <a style="text-decoration:none;font-weight:bold"
2168  href="<dtml-var absolute_url>?lang=<dtml-var lang>&<dtml-var actionId>=Register"><dtml-var "getLangStr('LMS_COURSE_REG',lang)"></a><br />
2169<dtml-elif "AUTHENTICATED_USER.has_role('Anonymous')">
2170 &raquo; <a style="text-decoration:none;font-weight:bold"
2171 href="<dtml-var absolute_url>?lang=<dtml-var lang>&<dtml-var actionId>=LoginRegister"><dtml-var "getLangStr('LMS_COURSE_LOGINREG',lang)"></a><br />
2172</dtml-if>
2173</div>
2174</div>
2175<!--// EO Display registration options //-->
2176
2177</dtml-if>
2178
2179<!-- EO bodyContentZMSCustom_courseMembers -->]]></item>
2180<item key="enabled" type="int">0</item>
2181<item key="key"><![CDATA[courseMembers]]></item>
2182<item key="value" type="dictionary"><dictionary>
2183<item key="__obj_attrs__" type="list"><list>
2184<item type="dictionary"><dictionary>
2185<item key="custom"/>
2186<item key="default"/>
2187<item key="id"><![CDATA[title]]></item>
2188<item key="keys" type="list"><list>
2189</list>
2190</item>
2191<item key="mandatory" type="int">1</item>
2192<item key="multilang" type="int">1</item>
2193<item key="name"><![CDATA[Title]]></item>
2194<item key="repetitive" type="int">0</item>
2195<item key="type"><![CDATA[string]]></item>
2196</dictionary>
2197</item>
2198<item type="dictionary"><dictionary>
2199<item key="custom" type="file">
2200<data content_type="image/gif" filename="courseMembers.gif" type="file">47494638396112001000f700004c4c4c6d6d6d6e6e6e9967019a68029c6a049e6c06a06e08a3710ba5730da87610ab7913ae7c16b07e18ff00ffb3811bb4811cb5821db7841fb88520ba8722bc8924bd8a25bf8c27c08d28c28f2ac5922dc7942fc99631cb9833cc9934d3a03bdca944e6b34eefbc57f8c560ffcc67ffd46fffe07b8383838c8c8cffe681ffeb85fff48efff791ffff99ffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021f9040100000e002c000000001200100007089f001d081c48b0a0410f1d386c30c8d0838b872e323024e8b085c5162e2c50901061638407033b5cbc08b124021402398c6cf1e2c5ca16070408dcb0b2e54b0301046a78c9b3404e07195ab060d1b2e88ba143710ac4d0428553152d9f3ef529d0420b13584db4cc9a95c04f0a2d4a887d3156acd901321d802d6b96ecd9b46bcdca958b76e0c7060c16284880e08081be06009c20782280e1c388030c761010003b</data></item>
2201<item key="default"/>
2202<item key="id"><![CDATA[icon]]></item>
2203<item key="keys" type="list"><list>
2204</list>
2205</item>
2206<item key="mandatory" type="int">0</item>
2207<item key="multilang" type="int">0</item>
2208<item key="name"><![CDATA[Icon]]></item>
2209<item key="repetitive" type="int">0</item>
2210<item key="type"><![CDATA[resource]]></item>
2211</dictionary>
2212</item>
2213<item type="dictionary"><dictionary>
2214<item key="custom"/>
2215<item key="default"/>
2216<item key="id"><![CDATA[memberIds]]></item>
2217<item key="keys" type="list"><list>
2218</list>
2219</item>
2220<item key="mandatory" type="int">0</item>
2221<item key="multilang" type="int">0</item>
2222<item key="name"><![CDATA[Registered Members-IDs]]></item>
2223<item key="repetitive" type="int">0</item>
2224<item key="type"><![CDATA[text]]></item>
2225</dictionary>
2226</item>
2227<item type="dictionary"><dictionary>
2228<item key="custom"><![CDATA[<!--// BO initReq //-->
2229
2230 <dtml-call "REQUEST.set('courseMembers',this())">
2231 <dtml-call "REQUEST.set('actionId','ACTION%s'%meta_id)">
2232 <dtml-call "REQUEST.set('templateUrl','%s/bodyContentZMSCustom_%s'%(absolute_url(),meta_id))">
2233
2234<!--// EO initReq //-->]]></item>
2235<item key="default"/>
2236<item key="id"><![CDATA[initReq]]></item>
2237<item key="keys" type="list"><list>
2238</list>
2239</item>
2240<item key="mandatory" type="int">0</item>
2241<item key="multilang" type="int">0</item>
2242<item key="name"><![CDATA[Init request]]></item>
2243<item key="repetitive" type="int">0</item>
2244<item key="type"><![CDATA[method]]></item>
2245</dictionary>
2246</item>
2247<item type="dictionary"><dictionary>
2248<item key="custom"><![CDATA[<!--// BO initObjChildren //-->
2249
2250<dtml-call "REQUEST.set('b',False)">
2251<dtml-call "REQUEST.set('ids',getObjProperty('memberIds',REQUEST))">
2252<dtml-call "REQUEST.set('memberIds',[])">
2253<dtml-call "REQUEST.set('userObjs',REQUEST.get('userObjs',getPersonalProfiles(_,_)))">
2254<dtml-in "string_list(ids)">
2255 <dtml-let memberId=sequence-item>
2256  <dtml-if "len(filter_list(userObjs,'id',memberId,'=='))==1">
2257   <dtml-call "memberIds.append(memberId)">
2258  <dtml-else>
2259   <dtml-call "REQUEST.set('b',True)">
2260  </dtml-if>
2261 </dtml-let>
2262</dtml-in>
2263<dtml-in "getRefByObjs(REQUEST)">
2264 <dtml-let ref=sequence-item track="getLinkObj(ref)">
2265  <dtml-if track>
2266   <dtml-if "track.isMetaType('userObjTrack') and
2267             track.getParentNode().isMetaType('userObj') and
2268             track.getParentNode().getParentNode().isMetaType('ZMSFolder')">
2269    <dtml-let member="track.getParentNode()" memberId="member.id">
2270     <dtml-unless "memberId in memberIds">
2271      <dtml-call "memberIds.append(memberId)">
2272      <dtml-call "REQUEST.set('b',True)">
2273     </dtml-unless>
2274    </dtml-let>
2275   </dtml-if>
2276  </dtml-if>
2277 </dtml-let>
2278</dtml-in>
2279<dtml-if b>
2280 <dtml-call "REQUEST.set('ids','')">
2281 <dtml-in memberIds>
2282  <dtml-let memberId=sequence-item>
2283   <dtml-call "REQUEST.set('ids',ids+memberId+'\n')">
2284  </dtml-let>
2285 </dtml-in>
2286 <dtml-call "setObjStateModified(REQUEST)">
2287 <dtml-call "setObjProperty('memberIds',ids,lang)">
2288 <dtml-call "onChangeObj(REQUEST)">
2289</dtml-if>
2290
2291<!--// EO initObjChildren //-->]]></item>
2292<item key="default"/>
2293<item key="id"><![CDATA[initObjChildren]]></item>
2294<item key="keys" type="list"><list>
2295</list>
2296</item>
2297<item key="mandatory" type="int">0</item>
2298<item key="multilang" type="int">0</item>
2299<item key="name"><![CDATA[Init object children]]></item>
2300<item key="repetitive" type="int">0</item>
2301<item key="type"><![CDATA[method]]></item>
2302</dictionary>
2303</item>
2304<item type="dictionary"><dictionary>
2305<item key="custom"><![CDATA[<!--// BO onChangeObjEvt //-->
2306
2307<dtml-call "REQUEST.set('msg',[])">
2308<dtml-let thisId=id>
2309
2310 <!-- ### Retrieve subscribers -->
2311 <dtml-call "msg.append('Retrieve subscribers\n')">
2312 <dtml-call "REQUEST.set('ids',['admin'])">
2313 <dtml-let userObjs="getPersonalProfiles(_,_)">
2314  <dtml-in "string_list(getObjProperty('memberIds',REQUEST,{'fetchReqBuff':0}))">
2315   <dtml-let memberId=sequence-item>
2316    <dtml-in "filter_list(userObjs,'id',memberId,'==')" mapping>
2317     <dtml-unless "profileEmail in REQUEST['ids']">
2318      <dtml-call "REQUEST['ids'].append(profileEmail)">
2319      <dtml-call "msg.append('* '+profileEmail+'\n')">
2320     </dtml-unless>
2321    </dtml-in>
2322   </dtml-let>
2323  </dtml-in>
2324 </dtml-let>
2325 
2326 <!-- ### Refresh subscribers -->
2327 <dtml-call "msg.append('Create subscribers\n')">
2328 <dtml-in "getParentNode().getChildNodes(REQUEST,PAGES)">
2329  <dtml-let ob=sequence-item>
2330   <dtml-unless "id==thisId">
2331    <dtml-call "REQUEST.set('local_ids',[])">
2332    <dtml-in get_local_roles>
2333     <dtml-let name=sequence-key roles="intersection_list(['ZMSSubscriber'],_['sequence-item'])">
2334      <dtml-if roles>
2335       <dtml-call "local_ids.append(name)">
2336      </dtml-if roles>
2337     </dtml-let>
2338    </dtml-in>
2339    <dtml-in "REQUEST['local_ids']">
2340     <dtml-let id=sequence-item>
2341      <dtml-unless "id in REQUEST['ids']">
2342       <dtml-call "delLocalUser(id,getRefObjPath(ob))">
2343       <dtml-call "msg.append('- Delete local user '+id+'@'+ob.id+'\n')">
2344      </dtml-unless>
2345     </dtml-let>
2346    </dtml-in>
2347    <dtml-in "REQUEST['ids']">
2348     <dtml-let id=sequence-item>
2349      <dtml-unless "id in REQUEST['local_ids']">
2350       <dtml-call "setLocalUser(id,getRefObjPath(ob),['ZMSSubscriber'],getLanguages())">
2351       <dtml-call "msg.append('+ '+id+'@'+ob.id+'\n')">
2352      </dtml-unless>
2353     </dtml-let>
2354    </dtml-in>
2355   </dtml-unless>
2356  </dtml-let>
2357 </dtml-in>
2358
2359</dtml-let>
2360<dtml-return "''.join(msg)">
2361 
2362<!--// EO onChangeObjEvt //-->]]></item>
2363<item key="default"/>
2364<item key="id"><![CDATA[onChangeObjEvt]]></item>
2365<item key="keys" type="list"><list>
2366</list>
2367</item>
2368<item key="mandatory" type="int">0</item>
2369<item key="multilang" type="int">0</item>
2370<item key="name"><![CDATA[Event: Change]]></item>
2371<item key="repetitive" type="int">0</item>
2372<item key="type"><![CDATA[method]]></item>
2373</dictionary>
2374</item>
2375<item type="dictionary"><dictionary>
2376<item key="custom"><![CDATA[<!--// BO bodyContent //-->
2377
2378  <h2><dtml-var "getTitlealt(REQUEST)"></h2>
2379  <div class="primColorLight0">
2380   <dtml-var "getBodyContent(REQUEST)">
2381  </div>
2382
2383<!--// EO bodyContent //-->]]></item>
2384<item key="default"/>
2385<item key="id"><![CDATA[bodyContent]]></item>
2386<item key="keys" type="list"><list>
2387</list>
2388</item>
2389<item key="mandatory" type="int">0</item>
2390<item key="multilang" type="int">0</item>
2391<item key="name"><![CDATA[Body content]]></item>
2392<item key="repetitive" type="int">0</item>
2393<item key="type"><![CDATA[method]]></item>
2394</dictionary>
2395</item>
2396<item type="dictionary"><dictionary>
2397<item key="custom"><![CDATA[<!--// BO displayPersonalProfile //-->
2398
2399<dtml-call "REQUEST.set('userObj',getPersonalProfileById(_,_,userObjId=ref))">
2400<dtml-call "REQUEST.set('userObjTrack',userObj['userObjTracks'][getParentNode().id])">
2401<dtml-call "REQUEST.set('attrData',userObjTrack.get('data',{}))">
2402
2403<dtml-let contentFolder="getParentNode().filteredChildNodes(REQUEST,'courseContent')[0]">
2404
2405<h1><dtml-var "display_type(REQUEST)"> for &quot;<dtml-var "contentFolder.getParentNode().getTitle(REQUEST)">&quot;</h1>
2406<p class="description">
2407  <dtml-var "userObj.get('profileAcademic')"> <dtml-var "userObj.get('profileFirstname')"> <dtml-var "userObj.get('profileLastname')"> <dtml-var "getLangStr('LMS_REG_SINCE',lang)">
2408  <dtml-var "getLangFmtDate(userObjTrack.get('creation_dt'),lang,'DATETIME_FMT')"></p>
2409<table>
2410<tr>
2411<td valign="top">
2412<dtml-if "userObj.get('profileImage')">
2413<img src="<dtml-var "userObj.get('profileImage').getHref(REQUEST)">">
2414</dtml-if>
2415</td>
2416<td>
2417<table>
2418<tr class="neutralColorLight0">
2419<td valign="top"><dtml-var "getLangStr('PROFILEPROFESSION',lang)">:</td>
2420<td><dtml-var "userObj.get('profileProfession')"></td>
2421</tr>
2422<tr class="neutralColorLight0">
2423<td valign="top"><dtml-var "getLangStr('PROFILEDISCIPLINE',lang)">:</td>
2424<td><dtml-var "userObj.get('profileDiscipline')"></td>
2425</tr>
2426
2427<tr class="neutralColorLight0">
2428<td valign="top"><dtml-var "getLangStr('PROFILECOMPANY',lang)">:</td>
2429<td><dtml-var "userObj.get('profileCompany')"></td>
2430</tr>
2431<tr class="neutralColorLight0">
2432<td valign="top"><dtml-var "getLangStr('PROFILESTREET',lang)">:</td>
2433<td><dtml-var "userObj.get('profileStreet')"></td>
2434</tr>
2435<tr class="neutralColorLight0">
2436<td valign="top"><dtml-var "getLangStr('PROFILEZIP',lang)">/<dtml-var "getLangStr('PROFILECITY',lang)">:</td>
2437<td><dtml-var "userObj.get('profileZip')"> 
2438<dtml-var "userObj.get('profileCity')"></td>
2439</tr>
2440<tr valign="top" class="neutralColorLight0">
2441 <td><dtml-var "getLangStr('PROFILECOUNTRY',lang)">:</td>
2442 <td><dtml-var "userObj.get('profileCountry')"></td>
2443</tr>
2444<tr valign="top" class="neutralColorLight0">
2445 <td><dtml-var "getLangStr('PROFILETEL',lang)">:</td>
2446 <td><dtml-var "userObj.get('profileTel')"></td>
2447</tr>
2448<tr valign="top" class="neutralColorLight0">
2449 <td><dtml-var "getLangStr('PROFILEFAX',lang)">:</td>
2450 <td><dtml-var "userObj.get('profileFax')"></td>
2451</tr>
2452<tr valign="top" class="neutralColorLight0">
2453 <td><dtml-var "getLangStr('PROFILEEMAIL',lang)">:</td>
2454 <td><a href="mailto:<dtml-var "userObj.get('profileEmail')">"><dtml-var "userObj.get('profileEmail')"></a></td>
2455</tr>
2456<tr valign="top" class="neutralColorLight0">
2457 <td><dtml-var "getLangStr('PROFILEWWW',lang)">:</td>
2458 <td><a href="<dtml-var "userObj.get('profileWWW')">"><dtml-var "userObj.get('profileWWW')"></a></td>
2459</tr>
2460<tr valign="top" class="neutralColorLight0">
2461 <td><dtml-var "getLangStr('PROFILECV',lang)">:</td>
2462 <td><dtml-var "userObj.get('profileCV')" newline_to_br html_quote></td>
2463</tr>
2464<tr valign="top" class="neutralColorLight0">
2465 <td><dtml-var "getLangStr('LMS_COURSES',lang)">:</td>
2466 <td><dtml-var "userObj.get('displayCourses')"></td>
2467</tr>
2468</table>
2469</td>
2470</tr>
2471</table>
2472
2473</dtml-let>
2474
2475<!--// EO displayPersonalProfile //-->]]></item>
2476<item key="default"/>
2477<item key="id"><![CDATA[displayPersonalProfile]]></item>
2478<item key="keys" type="list"><list>
2479</list>
2480</item>
2481<item key="mandatory" type="int">0</item>
2482<item key="multilang" type="int">0</item>
2483<item key="name"><![CDATA[Display personal profile]]></item>
2484<item key="repetitive" type="int">0</item>
2485<item key="type"><![CDATA[method]]></item>
2486</dictionary>
2487</item>
2488<item type="dictionary"><dictionary>
2489<item key="custom"><![CDATA[<!--// BO displayPersonalTrack //-->
2490
2491<dtml-call "REQUEST.set('userObj',getPersonalProfileByEmail(_,_,userObjEmail=AUTHENTICATED_USER.getId()))">
2492<dtml-call "REQUEST.set('userObjTrack',userObj['userObjTracks'][getParentNode().id])">
2493<dtml-call "REQUEST.set('attrData',userObjTrack.get('data',{}))">
2494
2495<dtml-let contentFolder="getParentNode().filteredChildNodes(REQUEST,'courseContent')[0]">
2496
2497<h1><dtml-var "display_type(REQUEST)"> <dtml-var "getLangStr('LMS_FOR',lang)"> &quot;<dtml-var "contentFolder.getParentNode().getTitle(REQUEST)">&quot;</h1>
2498<p class="description">
2499 <dtml-var "userObj.get('profileAcademic')"> <dtml-var "userObj.get('profileFirstname')"> <dtml-var "userObj.get('profileLastname')"> <dtml-var "getLangStr('LMS_REG_SINCE',lang)">
2500 <dtml-var "getLangFmtDate(userObjTrack.get('creation_dt'),lang,'DATETIME_FMT')"></p>
2501 <dtml-with contentFolder>
2502  <dtml-let imsmanifest="getObjProperty('_imsmanifest',REQUEST)">
2503  <dtml-in imsmanifest mapping>
2504   <dtml-let cmiDict="attrData.get(id,{})"
2505             success_status="cmiDict.get( 'cmi.success_status' ,'unknown')"
2506             completion_status="cmiDict.get( 'cmi.completion_status' ,'unknown')">
2507    <table cellspacing="0" cellpadding="2" border="0">
2508    <dtml-if href>
2509     <tr valign="top">
2510      <td class="navMicro" nowrap="nowrap" rowspan="2">
2511        <dtml-if "completion_status in ['completed']">
2512         <dtml-if "success_status in ['failed']">
2513          <font style="color:red">f</font>
2514         <dtml-elif "success_status in ['passed']">
2515          <font style="color:green">OK</font>
2516         <dtml-else>
2517          &#9658;
2518         </dtml-if>
2519        <dtml-elif "completion_status in ['incomplete']">
2520         <font style="color:yellow">-</font>
2521        <dtml-else>
2522         <dtml-if sequencing_rules>
2523          <font style="color:blue">-</font>
2524         <dtml-else>
2525          <font style="color:red">-</font>
2526         </dtml-if>
2527        </dtml-if>
2528       <dtml-in "_.range(0,level)">&nbsp;&nbsp;</dtml-in>
2529      </td>
2530      <td class="navMicro" nowrap="nowrap">
2531       <nobr><dtml-var title></nobr>
2532       (<i>
2533        <dtml-var "cmiDict.get('cmi.completion_status','unknown')">
2534        <dtml-if "cmiDict.get('cmi.completion_status','unknown')=='completed'"><dtml-var "cmiDict.get('cmi.success_status','unknown')"></dtml-if>
2535       </i>)
2536      </td>
2537     </tr>
2538     <tr valign="top">
2539      <td class="navMicro">
2540       <dtml-if "cmiDict.has_key('cmi.session_time')">
2541        Session Time: <dtml-var "cmiDict['cmi.session_time']"><br/>
2542       </dtml-if>
2543       <dtml-if "cmiDict.has_key('cmi.score.raw')">
2544        Score (Raw): <dtml-var "cmiDict['cmi.score.raw']"><br/>
2545       </dtml-if>
2546       <dtml-if "len(cmiDict.get('cmi.interactions',[]))>0">
2547        <table cellspacing="0" cellpadding="1" border="1">
2548        <tr>
2549         <th class="navMicro"><i><dtml-var "getLangStr('LMS_CMI_NO',lang)"></i></th>
2550         <th class="navMicro"><i><dtml-var "getLangStr('LMS_CMI_TYPE',lang)"></i></th>
2551         <th class="navMicro"><i><dtml-var "getLangStr('LMS_CMI_WEIGHTING',lang)"></i></th>
2552         <th class="navMicro"><i><dtml-var "getLangStr('LMS_CMI_RESULT',lang)"></i></th>
2553         <th class="navMicro"><i><dtml-var "getLangStr('LMS_CMI_LEARNER_RESPONSE',lang)"></i></th>
2554         <th class="navMicro"><i><dtml-var "getLangStr('LMS_CMI_CORRECT_RESPONSE',lang)"></i></th>
2555        </tr>
2556        <dtml-call "REQUEST.set('cmiCount',0)">
2557        <dtml-in "cmiDict['cmi.interactions']">
2558         <dtml-let cmi_interaction=sequence-item>
2559          <dtml-if "cmi_interaction.get('type','')!=''">
2560          <tr>
2561           <td class="navMicro" align="right"><dtml-var "cmiCount+1">.</td>
2562           <td class="navMicro"><dtml-var "cmi_interaction.get('type','')">&nbsp;</td>
2563           <td class="navMicro"><dtml-var "cmi_interaction.get('weighting','')">&nbsp;</td>
2564           <td class="navMicro" align="center">
2565            <dtml-if "cmi_interaction.get('result','')=='correct'"><font style="color:green">&#8730;</font>
2566            <dtml-elif "cmi_interaction.get('result','')=='incorrect'"><font style="color:red">f</font>
2567            <dtml-else><dtml-var "cmi_interaction.get('result','')"></dtml-if>&nbsp;
2568           </td>
2569           <td class="navMicro"><dtml-var "cmi_interaction.get('learner_response','')">&nbsp;</td>
2570           <td class="navMicro"><dtml-var "cmi_interaction.get('correct_responses.0.pattern','')">&nbsp;</td>
2571          </tr>
2572          <dtml-call "REQUEST.set('cmiCount',cmiCount+1)">
2573          </dtml-if>
2574         </dtml-let>
2575        </dtml-in>
2576        </table>
2577       </dtml-if>
2578      </td>
2579     </tr>
2580    <dtml-else>
2581     <tr valign="top">
2582      <td class="navMicro" nowrap="nowrap" rowspan="2">&nbsp;<dtml-in "_.range(0,level)">&nbsp;&nbsp;</dtml-in></td>
2583      <td class="navMicro" nowrap="nowrap"><nobr><font style="color:gray;"><i><dtml-var title></i></font></nobr></td>
2584     </tr>
2585    </dtml-if>
2586    </table>
2587   </dtml-let>
2588  </dtml-in>
2589 </dtml-let>
2590</dtml-with>
2591
2592</dtml-let>
2593
2594<!--// EO displayPersonalTrack //-->]]></item>
2595<item key="default"/>
2596<item key="id"><![CDATA[displayPersonalTrack]]></item>
2597<item key="keys" type="list"><list>
2598</list>
2599</item>
2600<item key="mandatory" type="int">0</item>
2601<item key="multilang" type="int">0</item>
2602<item key="name"><![CDATA[Display personal track]]></item>
2603<item key="repetitive" type="int">0</item>
2604<item key="type"><![CDATA[method]]></item>
2605</dictionary>
2606</item>
2607</list>
2608</item>
2609<item key="access" type="dictionary"><dictionary>
2610<item key="edit" type="list"><list>
2611<item><![CDATA[ZMSAdministrator]]></item>
2612<item><![CDATA[ZMSAuthor]]></item>
2613<item><![CDATA[ZMSEditor]]></item>
2614</list>
2615</item>
2616<item key="insert" type="list"><list>
2617</list>
2618</item>
2619</dictionary>
2620</item>
2621<item key="acquired" type="int">0</item>
2622<item key="name"><![CDATA[Course-Members]]></item>
2623<item key="package"><![CDATA[com.zms.elc.lms]]></item>
2624<item key="type"><![CDATA[ZMSDocument]]></item>
2625</dictionary>
2626</item>
2627</dictionary>
2628</item>
2629<item type="dictionary"><dictionary>
2630<item key="dtml"><![CDATA[<!-- BO bodyContentZMSCustom_courseMetaset -->
2631
2632<dtml-comment>
2633##########################################################################################
2634# Author:   Dr.Frank Hoffmann <fh@hoffmannliebenberg.de>
2635# Company:  HOFFMANN+LIEBENBERG GmbH
2636# WWW:      http://www.hoffmannliebenberg.de
2637# Date:     10.06.2007
2638# Version:  1.1.0
2639# Comments: ZMS eLearning components.
2640##########################################################################################
2641</dtml-comment>
2642
2643<table cellspacing="0" cellpadding="2" border="1" width="100%">
2644<dtml-in "getMetaobjAttrIds(meta_id)">
2645<dtml-let metaObjAttr="getMetaobjAttr(meta_id,_['sequence-item'])">
2646<dtml-if "metaObjAttr['id']=='c_register' or getObjProperty(metaObjAttr['id'],REQUEST)">
2647<tr valign="top">
2648 <th align="left" width="20%"><dtml-var "metaObjAttr['name']"></th>
2649 <td align="left" width="80%">
2650  <dtml-if "getObjProperty(metaObjAttr['id'],REQUEST)">
2651   <dtml-if "metaObjAttr['type']=='url'">
2652    <a href="<dtml-var "getLinkUrl(getObjProperty(metaObjAttr['id'],REQUEST),REQUEST)">"><dtml-var "getLinkUrl(getObjProperty(metaObjAttr['id'],REQUEST),REQUEST)"></a>
2653   <dtml-else>
2654    <dtml-var "getObjProperty(metaObjAttr['id'],REQUEST)" newline_to_br>
2655   </dtml-if>
2656  </dtml-if>
2657  <dtml-if "metaObjAttr['id']=='c_register'">
2658   <dtml-in "getParentNode().filteredChildNodes(REQUEST,'courseMembers')"> 
2659    <br/><dtml-var "getBodyContent(REQUEST)">
2660   </dtml-in>
2661  </dtml-if>
2662 </td>
2663</tr>
2664</dtml-if>
2665</dtml-let>
2666</dtml-in>
2667</table>
2668
2669<!-- EO bodyContentZMSCustom_courseMetaset -->]]></item>
2670<item key="enabled" type="int">0</item>
2671<item key="key"><![CDATA[courseMetaset]]></item>
2672<item key="value" type="dictionary"><dictionary>
2673<item key="__obj_attrs__" type="list"><list>
2674<item type="dictionary"><dictionary>
2675<item key="custom"/>
2676<item key="default"/>
2677<item key="id"><![CDATA[header]]></item>
2678<item key="keys" type="list"><list>
2679</list>
2680</item>
2681<item key="mandatory" type="int">0</item>
2682<item key="multilang" type="int">0</item>
2683<item key="name"><![CDATA[Please fill in the Course Announcement metadata!]]></item>
2684<item key="repetitive" type="int">0</item>
2685<item key="type"><![CDATA[delimiter]]></item>
2686</dictionary>
2687</item>
2688<item type="dictionary"><dictionary>
2689<item key="custom"/>
2690<item key="default"/>
2691<item key="id"><![CDATA[c_dur]]></item>
2692<item key="keys" type="list"><list>
2693</list>
2694</item>
2695<item key="mandatory" type="int">0</item>
2696<item key="multilang" type="int">1</item>
2697<item key="name"><![CDATA[Course duration]]></item>
2698<item key="repetitive" type="int">0</item>
2699<item key="type"><![CDATA[string]]></item>
2700</dictionary>
2701</item>
2702<item type="dictionary"><dictionary>
2703<item key="custom"/>
2704<item key="default"/>
2705<item key="id"><![CDATA[c_language]]></item>
2706<item key="keys" type="list"><list>
2707</list>
2708</item>
2709<item key="mandatory" type="int">0</item>
2710<item key="multilang" type="int">1</item>
2711<item key="name"><![CDATA[Language]]></item>
2712<item key="repetitive" type="int">0</item>
2713<item key="type"><![CDATA[string]]></item>
2714</dictionary>
2715</item>
2716<item type="dictionary"><dictionary>
2717<item key="custom"/>
2718<item key="default"/>
2719<item key="id"><![CDATA[c_fee]]></item>
2720<item key="keys" type="list"><list>
2721</list>
2722</item>
2723<item key="mandatory" type="int">0</item>
2724<item key="multilang" type="int">1</item>
2725<item key="name"><![CDATA[Fee]]></item>
2726<item key="repetitive" type="int">0</item>
2727<item key="type"><![CDATA[string]]></item>
2728</dictionary>
2729</item>
2730<item type="dictionary"><dictionary>
2731<item key="custom"/>
2732<item key="default"/>
2733<item key="id"><![CDATA[c_info]]></item>
2734<item key="keys" type="list"><list>
2735</list>
2736</item>
2737<item key="mandatory" type="int">0</item>
2738<item key="multilang" type="int">1</item>
2739<item key="name"><![CDATA[More information]]></item>
2740<item key="repetitive" type="int">0</item>
2741<item key="type"><![CDATA[string]]></item>
2742</dictionary>
2743</item>
2744<item type="dictionary"><dictionary>
2745<item key="custom"/>
2746<item key="default"/>
2747<item key="id"><![CDATA[c_targetgroup]]></item>
2748<item key="keys" type="list"><list>
2749</list>
2750</item>
2751<item key="mandatory" type="int">0</item>
2752<item key="multilang" type="int">1</item>
2753<item key="name"><![CDATA[Who is this course for ?]]></item>
2754<item key="repetitive" type="int">0</item>
2755<item key="type"><![CDATA[text]]></item>
2756</dictionary>
2757</item>
2758<item type="dictionary"><dictionary>
2759<item key="custom"/>
2760<item key="default"/>
2761<item key="id"><![CDATA[c_objective]]></item>
2762<item key="keys" type="list"><list>
2763</list>
2764</item>
2765<item key="mandatory" type="int">0</item>
2766<item key="multilang" type="int">1</item>
2767<item key="name"><![CDATA[Objective]]></item>
2768<item key="repetitive" type="int">0</item>
2769<item key="type"><![CDATA[text]]></item>
2770</dictionary>
2771</item>
2772<item type="dictionary"><dictionary>
2773<item key="custom"/>
2774<item key="default"/>
2775<item key="id"><![CDATA[c_bonus]]></item>
2776<item key="keys" type="list"><list>
2777</list>
2778</item>
2779<item key="mandatory" type="int">0</item>
2780<item key="multilang" type="int">1</item>
2781<item key="name"><![CDATA[Bonus]]></item>
2782<item key="repetitive" type="int">0</item>
2783<item key="type"><![CDATA[text]]></item>
2784</dictionary>
2785</item>
2786<item type="dictionary"><dictionary>
2787<item key="custom"/>
2788<item key="default"/>
2789<item key="id"><![CDATA[c_pre]]></item>
2790<item key="keys" type="list"><list>
2791</list>
2792</item>
2793<item key="mandatory" type="int">0</item>
2794<item key="multilang" type="int">1</item>
2795<item key="name"><![CDATA[Prerequisites]]></item>
2796<item key="repetitive" type="int">0</item>
2797<item key="type"><![CDATA[text]]></item>
2798</dictionary>
2799</item>
2800<item type="dictionary"><dictionary>
2801<item key="custom"/>
2802<item key="default"/>
2803<item key="id"><![CDATA[c_start]]></item>
2804<item key="keys" type="list"><list>
2805</list>
2806</item>
2807<item key="mandatory" type="int">0</item>
2808<item key="multilang" type="int">1</item>
2809<item key="name"><![CDATA[Available]]></item>
2810<item key="repetitive" type="int">0</item>
2811<item key="type"><![CDATA[string]]></item>
2812</dictionary>
2813</item>
2814<item type="dictionary"><dictionary>
2815<item key="custom"/>
2816<item key="default"/>
2817<item key="id"><![CDATA[c_size]]></item>
2818<item key="keys" type="list"><list>
2819</list>
2820</item>
2821<item key="mandatory" type="int">0</item>
2822<item key="multilang" type="int">1</item>
2823<item key="name"><![CDATA[Class size]]></item>
2824<item key="repetitive" type="int">0</item>
2825<item key="type"><![CDATA[string]]></item>
2826</dictionary>
2827</item>
2828<item type="dictionary"><dictionary>
2829<item key="custom"/>
2830<item key="default"/>
2831<item key="id"><![CDATA[c_register]]></item>
2832<item key="keys" type="list"><list>
2833</list>
2834</item>
2835<item key="mandatory" type="int">0</item>
2836<item key="multilang" type="int">1</item>
2837<item key="name"><![CDATA[Registration]]></item>
2838<item key="repetitive" type="int">0</item>
2839<item key="type"><![CDATA[text]]></item>
2840</dictionary>
2841</item>
2842<item type="dictionary"><dictionary>
2843<item key="custom"/>
2844<item key="default"/>
2845<item key="id"><![CDATA[c_learn]]></item>
2846<item key="keys" type="list"><list>
2847</list>
2848</item>
2849<item key="mandatory" type="int">0</item>
2850<item key="multilang" type="int">1</item>
2851<item key="name"><![CDATA[How you will learn]]></item>
2852<item key="repetitive" type="int">0</item>
2853<item key="type"><![CDATA[text]]></item>
2854</dictionary>
2855</item>
2856<item type="dictionary"><dictionary>
2857<item key="custom"/>
2858<item key="default"/>
2859<item key="id"><![CDATA[c_require]]></item>
2860<item key="keys" type="list"><list>
2861</list>
2862</item>
2863<item key="mandatory" type="int">0</item>
2864<item key="multilang" type="int">1</item>
2865<item key="name"><![CDATA[What this course requires from you]]></item>
2866<item key="repetitive" type="int">0</item>
2867<item key="type"><![CDATA[text]]></item>
2868</dictionary>
2869</item>
2870<item type="dictionary"><dictionary>
2871<item key="custom"/>
2872<item key="default"/>
2873<item key="id"><![CDATA[c_time]]></item>
2874<item key="keys" type="list"><list>
2875</list>
2876</item>
2877<item key="mandatory" type="int">0</item>
2878<item key="multilang" type="int">1</item>
2879<item key="name"><![CDATA[Time required]]></item>
2880<item key="repetitive" type="int">0</item>
2881<item key="type"><![CDATA[text]]></item>
2882</dictionary>
2883</item>
2884<item type="dictionary"><dictionary>
2885<item key="custom"/>
2886<item key="default"/>
2887<item key="id"><![CDATA[c_tech]]></item>
2888<item key="keys" type="list"><list>
2889</list>
2890</item>
2891<item key="mandatory" type="int">0</item>
2892<item key="multilang" type="int">1</item>
2893<item key="name"><![CDATA[Technical requirements]]></item>
2894<item key="repetitive" type="int">0</item>
2895<item key="type"><![CDATA[text]]></item>
2896</dictionary>
2897</item>
2898<item type="dictionary"><dictionary>
2899<item key="custom"/>
2900<item key="default"/>
2901<item key="id"><![CDATA[c_most]]></item>
2902<item key="keys" type="list"><list>
2903</list>
2904</item>
2905<item key="mandatory" type="int">0</item>
2906<item key="multilang" type="int">1</item>
2907<item key="name"><![CDATA[To get most out of this course]]></item>
2908<item key="repetitive" type="int">0</item>
2909<item key="type"><![CDATA[text]]></item>
2910</dictionary>
2911</item>
2912<item type="dictionary"><dictionary>
2913<item key="custom"/>
2914<item key="default"/>
2915<item key="id"><![CDATA[c_author]]></item>
2916<item key="keys" type="list"><list>
2917</list>
2918</item>
2919<item key="mandatory" type="int">0</item>
2920<item key="multilang" type="int">1</item>
2921<item key="name"><![CDATA[Authors and facilitators]]></item>
2922<item key="repetitive" type="int">0</item>
2923<item key="type"><![CDATA[text]]></item>
2924</dictionary>
2925</item>
2926<item type="dictionary"><dictionary>
2927<item key="custom"/>
2928<item key="default"/>
2929<item key="id"><![CDATA[c_grade]]></item>
2930<item key="keys" type="list"><list>
2931</list>
2932</item>
2933<item key="mandatory" type="int">0</item>
2934<item key="multilang" type="int">1</item>
2935<item key="name"><![CDATA[Credits]]></item>
2936<item key="repetitive" type="int">0</item>
2937<item key="type"><![CDATA[text]]></item>
2938</dictionary>
2939</item>
2940<item type="dictionary"><dictionary>
2941<item key="custom"/>
2942<item key="default"/>
2943<item key="id"><![CDATA[c_before]]></item>
2944<item key="keys" type="list"><list>
2945</list>
2946</item>
2947<item key="mandatory" type="int">0</item>
2948<item key="multilang" type="int">1</item>
2949<item key="name"><![CDATA[Before you start]]></item>
2950<item key="repetitive" type="int">0</item>
2951<item key="type"><![CDATA[text]]></item>
2952</dictionary>
2953</item>
2954<item type="dictionary"><dictionary>
2955<item key="custom"/>
2956<item key="default"/>
2957<item key="id"><![CDATA[c_url]]></item>
2958<item key="keys" type="list"><list>
2959</list>
2960</item>
2961<item key="mandatory" type="int">0</item>
2962<item key="multilang" type="int">1</item>
2963<item key="name"><![CDATA[URL]]></item>
2964<item key="repetitive" type="int">0</item>
2965<item key="type"><![CDATA[url]]></item>
2966</dictionary>
2967</item>
2968<item type="dictionary"><dictionary>
2969<item key="custom"/>
2970<item key="default"/>
2971<item key="id"><![CDATA[c_version]]></item>
2972<item key="keys" type="list"><list>
2973</list>
2974</item>
2975<item key="mandatory" type="int">0</item>
2976<item key="multilang" type="int">1</item>
2977<item key="name"><![CDATA[Version]]></item>
2978<item key="repetitive" type="int">0</item>
2979<item key="type"><![CDATA[string]]></item>
2980</dictionary>
2981</item>
2982<item type="dictionary"><dictionary>
2983<item key="custom"/>
2984<item key="default"/>
2985<item key="id"><![CDATA[c_length]]></item>
2986<item key="keys" type="list"><list>
2987</list>
2988</item>
2989<item key="mandatory" type="int">0</item>
2990<item key="multilang" type="int">1</item>
2991<item key="name"><![CDATA[Study time]]></item>
2992<item key="repetitive" type="int">0</item>
2993<item key="type"><![CDATA[string]]></item>
2994</dictionary>
2995</item>
2996<item type="dictionary"><dictionary>
2997<item key="custom"/>
2998<item key="default"/>
2999<item key="id"><![CDATA[c_phase]]></item>
3000<item key="keys" type="list"><list>
3001</list>
3002</item>
3003<item key="mandatory" type="int">0</item>
3004<item key="multilang" type="int">1</item>
3005<item key="name"><![CDATA[Course phases]]></item>
3006<item key="repetitive" type="int">0</item>
3007<item key="type"><![CDATA[text]]></item>
3008</dictionary>
3009</item>
3010<item type="dictionary"><dictionary>
3011<item key="custom"/>
3012<item key="default"/>
3013<item key="id"><![CDATA[c_rhy]]></item>
3014<item key="keys" type="list"><list>
3015</list>
3016</item>
3017<item key="mandatory" type="int">0</item>
3018<item key="multilang" type="int">1</item>
3019<item key="name"><![CDATA[Schedule of material delivery]]></item>
3020<item key="repetitive" type="int">0</item>
3021<item key="type"><![CDATA[text]]></item>
3022</dictionary>
3023</item>
3024<item type="dictionary"><dictionary>
3025<item key="custom"/>
3026<item key="default"/>
3027<item key="id"><![CDATA[c_final]]></item>
3028<item key="keys" type="list"><list>
3029</list>
3030</item>
3031<item key="mandatory" type="int">0</item>
3032<item key="multilang" type="int">1</item>
3033<item key="name"><![CDATA[Welcome]]></item>
3034<item key="repetitive" type="int">0</item>
3035<item key="type"><![CDATA[text]]></item>
3036</dictionary>
3037</item>
3038</list>
3039</item>
3040<item key="access" type="dictionary"><dictionary>
3041<item key="edit" type="list"><list>
3042<item><![CDATA[ZMSAdministrator]]></item>
3043<item><![CDATA[ZMSAuthor]]></item>
3044<item><![CDATA[ZMSEditor]]></item>
3045</list>
3046</item>
3047<item key="insert" type="list"><list>
3048</list>
3049</item>
3050</dictionary>
3051</item>
3052<item key="acquired" type="int">0</item>
3053<item key="name"><![CDATA[Course-Metaset]]></item>
3054<item key="package"><![CDATA[com.zms.elc.lms]]></item>
3055<item key="type"><![CDATA[ZMSResource]]></item>
3056</dictionary>
3057</item>
3058</dictionary>
3059</item>
3060<item type="dictionary"><dictionary>
3061<item key="dtml"><![CDATA[<!-- BO bodyContentZMSCustom_com.zms.elc.lms -->
3062
3063
3064<!-- EO bodyContentZMSCustom_com.zms.elc.lms -->]]></item>
3065<item key="enabled" type="int">1</item>
3066<item key="key"><![CDATA[com.zms.elc.lms]]></item>
3067<item key="value" type="dictionary"><dictionary>
3068<item key="__obj_attrs__" type="list"><list>
3069</list>
3070</item>
3071<item key="acquired" type="int">0</item>
3072<item key="name"><![CDATA[com.zms.elc.lms]]></item>
3073<item key="type"><![CDATA[ZMSPackage]]></item>
3074</dictionary>
3075</item>
3076</dictionary>
3077</item>
3078<item type="dictionary"><dictionary>
3079<item key="dtml"><![CDATA[<!-- BO bodyContentZMSCustom_userObjTrack -->
3080
3081<!-- EO bodyContentZMSCustom_userObjTrack -->]]></item>
3082<item key="enabled" type="int">0</item>
3083<item key="key"><![CDATA[userObjTrack]]></item>
3084<item key="value" type="dictionary"><dictionary>
3085<item key="__obj_attrs__" type="list"><list>
3086<item type="dictionary"><dictionary>
3087<item key="custom" type="file">
3088<data content_type="image/gif" filename="icon_track.gif" type="file">47494638396112001000b300004c4e4c6c961ca4a2a4a4ca5ce4ee95fcfee5958a6ffcf379f0f2bbfc02fcecb9798cba34796f62c68e0fecca94fccf5e21f90401000009002c000000001200100003047c30b5496b4d5896cdfb6e46d614c886300d5396a9689e4c0c702dd6203863288e0100b89a044140180c0887a20124081b84c361a75c02a44fa954b04c69b3da838e11061f045c82e28765881e0f41d2d01b2c008f67dc912418160b156e367144010e03890d0e4c21843f909013008e36161694191906319d9e951811003b</data></item>
3089<item key="default"/>
3090<item key="id"><![CDATA[icon]]></item>
3091<item key="keys" type="list"><list>
3092</list>
3093</item>
3094<item key="mandatory" type="int">0</item>
3095<item key="multilang" type="int">0</item>
3096<item key="name"><![CDATA[Icon]]></item>
3097<item key="repetitive" type="int">0</item>
3098<item key="type"><![CDATA[resource]]></item>
3099</dictionary>
3100</item>
3101<item type="dictionary"><dictionary>
3102<item key="custom"/>
3103<item key="default"/>
3104<item key="id"><![CDATA[titlealt]]></item>
3105<item key="keys" type="list"><list>
3106</list>
3107</item>
3108<item key="mandatory" type="int">1</item>
3109<item key="multilang" type="int">1</item>
3110<item key="name"><![CDATA[Title.Alt]]></item>
3111<item key="repetitive" type="int">0</item>
3112<item key="type"><![CDATA[string]]></item>
3113</dictionary>
3114</item>
3115<item type="dictionary"><dictionary>
3116<item key="custom"/>
3117<item key="default"/>
3118<item key="id"><![CDATA[attrRef]]></item>
3119<item key="keys" type="list"><list>
3120</list>
3121</item>
3122<item key="mandatory" type="int">1</item>
3123<item key="multilang" type="int">0</item>
3124<item key="name"><![CDATA[Course Reference]]></item>
3125<item key="repetitive" type="int">0</item>
3126<item key="type"><![CDATA[url]]></item>
3127</dictionary>
3128</item>
3129<item type="dictionary"><dictionary>
3130<item key="custom"/>
3131<item key="default"/>
3132<item key="id"><![CDATA[attrData]]></item>
3133<item key="keys" type="list"><list>
3134</list>
3135</item>
3136<item key="mandatory" type="int">1</item>
3137<item key="multilang" type="int">0</item>
3138<item key="name"><![CDATA[Tracked Data]]></item>
3139<item key="repetitive" type="int">0</item>
3140<item key="type"><![CDATA[dictionary]]></item>
3141</dictionary>
3142</item>
3143<item type="dictionary"><dictionary>
3144<item key="custom"/>
3145<item key="default"/>
3146<item key="id"><![CDATA[attrCreationDt]]></item>
3147<item key="keys" type="list"><list>
3148</list>
3149</item>
3150<item key="mandatory" type="int">1</item>
3151<item key="multilang" type="int">0</item>
3152<item key="name"><![CDATA[Creation Date]]></item>
3153<item key="repetitive" type="int">0</item>
3154<item key="type"><![CDATA[datetime]]></item>
3155</dictionary>
3156</item>
3157</list>
3158</item>
3159<item key="access" type="dictionary"><dictionary>
3160<item key="edit" type="list"><list>
3161<item><![CDATA[ZMSAdministrator]]></item>
3162<item><![CDATA[ZMSAuthor]]></item>
3163<item><![CDATA[ZMSEditor]]></item>
3164</list>
3165</item>
3166<item key="insert" type="list"><list>
3167<item><![CDATA[ZMSAdministrator]]></item>
3168<item><![CDATA[ZMSAuthor]]></item>
3169<item><![CDATA[ZMSEditor]]></item>
3170</list>
3171</item>
3172</dictionary>
3173</item>
3174<item key="acquired" type="int">0</item>
3175<item key="name"><![CDATA[Personal-Track]]></item>
3176<item key="package"><![CDATA[com.zms.elc.lms]]></item>
3177<item key="type"><![CDATA[ZMSDocument]]></item>
3178</dictionary>
3179</item>
3180</dictionary>
3181</item>
3182<item type="dictionary"><dictionary>
3183<item key="dtml"><![CDATA[<!-- BO bodyContentZMSCustom_userObj -->
3184
3185<dtml-comment>
3186##########################################################################################
3187# Author:   Dr.Frank Hoffmann <fh@hoffmannliebenberg.de>
3188# Company:  HOFFMANN+LIEBENBERG GmbH
3189# WWW:      http://www.hoffmannliebenberg.de
3190# Date:     10.06.2007
3191# Version:  1.1.0
3192# Comments: ZMS eLearning components.
3193##########################################################################################
3194</dtml-comment>
3195
3196<dtml-var bodyContent_PagePre>
3197<dtml-call "getObjProperty('initReq',REQUEST)">
3198<dtml-var "getObjProperty(REQUEST.get(actionId,'displayProfile'),REQUEST)">
3199<dtml-var bodyContent_PagePost>
3200
3201<!-- EO bodyContentZMSCustom_userObj -->]]></item>
3202<item key="enabled" type="int">1</item>
3203<item key="key"><![CDATA[userObj]]></item>
3204<item key="value" type="dictionary"><dictionary>
3205<item key="__obj_attrs__" type="list"><list>
3206<item type="dictionary"><dictionary>
3207<item key="custom"/>
3208<item key="default"/>
3209<item key="id"><![CDATA[_titlealt]]></item>
3210<item key="keys" type="list"><list>
3211</list>
3212</item>
3213<item key="mandatory" type="int">1</item>
3214<item key="multilang" type="int">0</item>
3215<item key="name"><![CDATA[DC.Title.Alt]]></item>
3216<item key="repetitive" type="int">0</item>
3217<item key="type"><![CDATA[string]]></item>
3218</dictionary>
3219</item>
3220<item type="dictionary"><dictionary>
3221<item key="custom"/>
3222<item key="default"/>
3223<item key="id"><![CDATA[_title]]></item>
3224<item key="keys" type="list"><list>
3225</list>
3226</item>
3227<item key="mandatory" type="int">0</item>
3228<item key="multilang" type="int">0</item>
3229<item key="name"><![CDATA[DC.Title]]></item>
3230<item key="repetitive" type="int">0</item>
3231<item key="type"><![CDATA[string]]></item>
3232</dictionary>
3233</item>
3234<item type="dictionary"><dictionary>
3235<item key="custom" type="file">
3236<data content_type="image/gif" filename="icon_users.gif" type="file">47494638396110001000f700005b49325a49345c48314e4e4e6d971f76885493642b91663096673dbb7a3486735c87745e9570419473479a7b548d7e6da6774dd97e2add7f2c83b62587b92b8abc33889d6192816c92bf40ba9d7597c3479ac54d9fc756a7cc65a9cd69c2955ae29543e7a356e7a556edb56cf0bf7b9f978ca3a3a3bad786bdda88cfb590d8b889c7df9bcae2a3cde3a8d1e6aed5e8b4e3c497f1c383f2ca8ef7daabf9e0baddd9d4dbebc1dfedc7fbeacfe1e1e1eaeaeaf0282800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000021f9040100003b002c00000000100010000008780077081c48b0a0c11d17145c38585041030607043014b8c0410a181f0c0098f820038d19311204985842850c1221220c98b8c38408101210b01408a1e64c132646e0203160e541132f581420614143059f044ddc70b1e284050e18284c402ad0848d16135074d8e081c0d4823dc38aed39b3acd9b33b0202003b</data></item>
3237<item key="default"/>
3238<item key="id"><![CDATA[icon]]></item>
3239<item key="keys" type="list"><list>
3240</list>
3241</item>
3242<item key="mandatory" type="int">0</item>
3243<item key="multilang" type="int">0</item>
3244<item key="name"><![CDATA[Icon]]></item>
3245<item key="repetitive" type="int">0</item>
3246<item key="type"><![CDATA[resource]]></item>
3247</dictionary>
3248</item>
3249<item type="dictionary"><dictionary>
3250<item key="custom"/>
3251<item key="default"/>
3252<item key="id"><![CDATA[profileLastname]]></item>
3253<item key="keys" type="list"><list>
3254</list>
3255</item>
3256<item key="mandatory" type="int">1</item>
3257<item key="multilang" type="int">0</item>
3258<item key="name"><![CDATA[Last name]]></item>
3259<item key="repetitive" type="int">0</item>
3260<item key="type"><![CDATA[string]]></item>
3261</dictionary>
3262</item>
3263<item type="dictionary"><dictionary>
3264<item key="custom"/>
3265<item key="default"/>
3266<item key="id"><![CDATA[profileFirstname]]></item>
3267<item key="keys" type="list"><list>
3268</list>
3269</item>
3270<item key="mandatory" type="int">1</item>
3271<item key="multilang" type="int">0</item>
3272<item key="name"><![CDATA[First name]]></item>
3273<item key="repetitive" type="int">0</item>
3274<item key="type"><![CDATA[string]]></item>
3275</dictionary>
3276</item>
3277<item type="dictionary"><dictionary>
3278<item key="custom"/>
3279<item key="default"/>
3280<item key="id"><![CDATA[profileSalutation]]></item>
3281<item key="keys" type="list"><list>
3282<item><![CDATA[Herr]]></item>
3283<item><![CDATA[Frau]]></item>
3284</list>
3285</item>
3286<item key="mandatory" type="int">0</item>
3287<item key="multilang" type="int">0</item>
3288<item key="name"><![CDATA[Salutation]]></item>
3289<item key="repetitive" type="int">0</item>
3290<item key="type"><![CDATA[select]]></item>
3291</dictionary>
3292</item>
3293<item type="dictionary"><dictionary>
3294<item key="custom"/>
3295<item key="default"/>
3296<item key="id"><![CDATA[profileAcademic]]></item>
3297<item key="keys" type="list"><list>
3298</list>
3299</item>
3300<item key="mandatory" type="int">0</item>
3301<item key="multilang" type="int">0</item>
3302<item key="name"><![CDATA[Academic Title]]></item>
3303<item key="repetitive" type="int">0</item>
3304<item key="type"><![CDATA[string]]></item>
3305</dictionary>
3306</item>
3307<item type="dictionary"><dictionary>
3308<item key="custom"/>
3309<item key="default"/>
3310<item key="id"><![CDATA[profileProfession]]></item>
3311<item key="keys" type="list"><list>
3312<item><![CDATA[-]]></item>
3313<item><![CDATA[Arzt/Ãᅵrztin]]></item>
3314<item><![CDATA[Apotheker/-in]]></item>
3315<item><![CDATA[Tierarzt/-Àrztin]]></item>
3316<item><![CDATA[Zahnarzt/-Àrztin]]></item>
3317<item><![CDATA[Student]]></item>
3318<item><![CDATA[Arzthelfer/in]]></item>
3319<item><![CDATA[Altenpfleger/in]]></item>
3320<item><![CDATA[Apothekenhelfer/in]]></item>
3321<item><![CDATA[Bibliothekar/in]]></item>
3322<item><![CDATA[Biologe/in]]></item>
3323<item><![CDATA[Chemiker/in]]></item>
3324<item><![CDATA[Medizinphysiker/in]]></item>
3325<item><![CDATA[Biochemiker/in]]></item>
3326<item><![CDATA[Ergotherapeut/in]]></item>
3327<item><![CDATA[Heilpraktiker/in]]></item>
3328<item><![CDATA[Hebamme]]></item>
3329<item><![CDATA[Krankenschwester/-pfleger]]></item>
3330<item><![CDATA[Medizininformatiker/in]]></item>
3331<item><![CDATA[Medizinjournalist/in]]></item>
3332<item><![CDATA[Medizintechniker/in]]></item>
3333<item><![CDATA[PTA]]></item>
3334<item><![CDATA[Pharmazeutisch-kaufmÀnnische/r Angestellte/r]]></item>
3335<item><![CDATA[Pharmazie-Ingenieur/in]]></item>
3336<item><![CDATA[Med.-Tech. Assistent/in]]></item>
3337<item><![CDATA[Mitarbeiter/in medizinischer Verlage]]></item>
3338<item><![CDATA[Mitarbeiter/in medizinischer Werbeagenturen]]></item>
3339<item><![CDATA[Psychologe/in]]></item>
3340<item><![CDATA[Psychotherapeut/in]]></item>
3341<item><![CDATA[Physiotherapeut/in]]></item>
3342<item><![CDATA[Rettungsassistent/in]]></item>
3343<item><![CDATA[RettungssanitÀter/in]]></item>
3344<item><![CDATA[Unternehmensberater]]></item>
3345<item><![CDATA[Sonstige medizinische Berufe]]></item>
3346<item><![CDATA[Versicherungsfachangestelle/r]]></item>
3347<item><![CDATA[DiÀtassistent/in]]></item>
3348<item><![CDATA[Pharmakant]]></item>
3349<item><![CDATA[Medizinische Dokumentar/in]]></item>
3350<item><![CDATA[Rechtsanwalt/Jurist]]></item>
3351<item><![CDATA[Student/in der Osteopathie]]></item>
3352<item><![CDATA[Toxikologe/in]]></item>
3353<item><![CDATA[BTA,  CTA]]></item>
3354<item><![CDATA[Medizinische/r FachhÀndler/in]]></item>
3355<item><![CDATA[Mitarbeiter von Krankenkassen]]></item>
3356<item><![CDATA[Augenoptiker/in, Optometrist/in]]></item>
3357<item><![CDATA[Student/in der Tiermedizin]]></item>
3358<item><![CDATA[Student/in der Pharmazie]]></item>
3359<item><![CDATA[Psychologisch-Technische Assistent/in]]></item>
3360<item><![CDATA[Pflegewirt/in]]></item>
3361<item><![CDATA[Firmenpasswort]]></item>
3362<item><![CDATA[Mitarbeiter von Antwerpes&Partner]]></item>
3363<item><![CDATA[SanitÀtsdienst der Bundeswehr]]></item>
3364<item><![CDATA[LogopÀde/in]]></item>
3365<item><![CDATA[Zahntechniker/in]]></item>
3366<item><![CDATA[Zahnarzthelfer/in]]></item>
3367<item><![CDATA[Diabetes-Berater/in]]></item>
3368<item><![CDATA[Drogist/in]]></item>
3369<item><![CDATA[Chiropraktiker/in]]></item>
3370<item><![CDATA[Dentalhygieniker/in]]></item>
3371<item><![CDATA[Ortoptist/in]]></item>
3372<item><![CDATA[Krankenpflegehelfer/in]]></item>
3373<item><![CDATA[Kinderkrankenschwester/pfleger]]></item>
3374<item><![CDATA[Krankenhausverwaltung]]></item>
3375<item><![CDATA[AnÀsthesieschwester/pfleger]]></item>
3376<item><![CDATA[OP-Schwester/OP-Pfleger]]></item>
3377<item><![CDATA[Mitarbeiter der pharmazeutischen Industrie]]></item>
3378<item><![CDATA[Student/in der Humanmedizin]]></item>
3379<item><![CDATA[Student/in der Zahnmedizin]]></item>
3380<item><![CDATA[Arzt/Ãᅵrztin im Praktikum (AiP)]]></item>
3381<item><![CDATA[selbststÀndige/r Apotheker/in]]></item>
3382<item><![CDATA[angestellte/r Apotheker/in]]></item>
3383<item><![CDATA[Pharmazie-Praktikant/in]]></item>
3384<item><![CDATA[Naturwissenschaftler/in]]></item>
3385<item><![CDATA[BWL/VWL o.À.]]></item>
3386<item><![CDATA[Geisteswissenschaftler/in]]></item>
3387<item><![CDATA[Techniker/in, IT]]></item>
3388<item><![CDATA[Sonstige]]></item>
3389<item><![CDATA[Pflegeheimleiter/in]]></item>
3390<item><![CDATA[Laborant/in]]></item>
3391<item><![CDATA[Pharmaassistent/in]]></item>
3392<item><![CDATA[Mitarbeiter von DocCheck]]></item>
3393</list>
3394</item>
3395<item key="mandatory" type="int">0</item>
3396<item key="multilang" type="int">0</item>
3397<item key="name"><![CDATA[Profession]]></item>
3398<item key="repetitive" type="int">0</item>
3399<item key="type"><![CDATA[select]]></item>
3400</dictionary>
3401</item>
3402<item type="dictionary"><dictionary>
3403<item key="custom"/>
3404<item key="default"/>
3405<item key="id"><![CDATA[profileDiscipline]]></item>
3406<item key="keys" type="list"><list>
3407<item><![CDATA[-]]></item>
3408<item><![CDATA[Allgemeinmedizin]]></item>
3409<item><![CDATA[AnÀsthesiologie]]></item>
3410<item><![CDATA[Anatomie]]></item>
3411<item><![CDATA[Arbeitsmedizin]]></item>
3412<item><![CDATA[Augenheilkunde]]></item>
3413<item><![CDATA[Biochemie]]></item>
3414<item><![CDATA[Chirurgie - allg.]]></item>
3415<item><![CDATA[Chirurgie - Schwerpunkt GefÀÃᅵchirurgie]]></item>
3416<item><![CDATA[Chirurgie - Schwerpunkt Herzchirurgie]]></item>
3417<item><![CDATA[Chirurgie - Schwerpunkt Kinderchirurgie]]></item>
3418<item><![CDATA[Chirurgie - Schwerpunkt Plastische Chirurgie]]></item>
3419<item><![CDATA[Chirurgie - Schwerpunkt Thoraxchirurgie]]></item>
3420<item><![CDATA[Chirurgie - Schwerpunkt Unfallchirurgie]]></item>
3421<item><![CDATA[Chirurgie - Schwerpunkt Viszeralchirurgie]]></item>
3422<item><![CDATA[Radiologie/Diagn. Radio.]]></item>
3423<item><![CDATA[Frauenheilkunde und Geburtshilfe]]></item>
3424<item><![CDATA[Innere Medizin - Schwerpunkt Geriatrie]]></item>
3425<item><![CDATA[Hals-Nasen-Ohrenheilkunde]]></item>
3426<item><![CDATA[Haut- und Geschlechtskrankheiten]]></item>
3427<item><![CDATA[Humangenetik]]></item>
3428<item><![CDATA[Hygiene und Umweltmedizin]]></item>
3429<item><![CDATA[Innere Medizin (allg.)]]></item>
3430<item><![CDATA[Innere Medizin - Schwerpunkt Angiologie]]></item>
3431<item><![CDATA[Innere Medizin - Schwerpunkt Diabetologie]]></item>
3432<item><![CDATA[Innere Medizin - Schwerpunkt Endokrinologie]]></item>
3433<item><![CDATA[Innere Medizin - Schwerpunkt Gastroenterologie]]></item>
3434<item><![CDATA[Innere Medizin - Schwerpunkt HÀmatologie]]></item>
3435<item><![CDATA[Innere Medizin - Schwerpunkt Immunologie]]></item>
3436<item><![CDATA[Innere Medizin - Schwerpunkt Kardiologie]]></item>
3437<item><![CDATA[Innere Medizin - Schwerpunkt Nephrologie]]></item>
3438<item><![CDATA[Innere Medizin - Schwerpunkt Onkologie]]></item>
3439<item><![CDATA[Innere Medizin - Schwerpunkt Pneumologie]]></item>
3440<item><![CDATA[Innere Medizin - Schwerpunkt Rheumatologie]]></item>
3441<item><![CDATA[Intensivmedizin]]></item>
3442<item><![CDATA[Kinderheilkunde]]></item>
3443<item><![CDATA[Kinder-, Jugendpsychiatrie und -psychotherapie]]></item>
3444<item><![CDATA[Klinische Pharmakologie]]></item>
3445<item><![CDATA[Laboratoriumsmedizin]]></item>
3446<item><![CDATA[Medizinische Informatik]]></item>
3447<item><![CDATA[Mikrobiologie]]></item>
3448<item><![CDATA[Mund-Kiefer-Gesichtschirurgie]]></item>
3449<item><![CDATA[Naturheilverfahren]]></item>
3450<item><![CDATA[Neurochirurgie]]></item>
3451<item><![CDATA[Neurologie]]></item>
3452<item><![CDATA[Neuropathologie]]></item>
3453<item><![CDATA[Notfallmedizin]]></item>
3454<item><![CDATA[Nuklearmedizin]]></item>
3455<item><![CDATA[Nervenarzt]]></item>
3456<item><![CDATA[ohne Gebietsbezeichnung]]></item>
3457<item><![CDATA[Ãᅵffentliches Gesundheitswesen]]></item>
3458<item><![CDATA[OrthopÀdie]]></item>
3459<item><![CDATA[Pathologie]]></item>
3460<item><![CDATA[Pharmakologie und Toxikologie]]></item>
3461<item><![CDATA[Physiologie]]></item>
3462<item><![CDATA[Psychiatrie und Psychotherapie]]></item>
3463<item><![CDATA[Psychotherapeutische Medizin]]></item>
3464<item><![CDATA[Psychosomatik]]></item>
3465<item><![CDATA[Rehabilitationsmedizin]]></item>
3466<item><![CDATA[Sozialmedizin]]></item>
3467<item><![CDATA[Strahlentherapie]]></item>
3468<item><![CDATA[Transfusionsmedizin]]></item>
3469<item><![CDATA[Tiermedizin]]></item>
3470<item><![CDATA[Urologie]]></item>
3471<item><![CDATA[Zahnmedizin]]></item>
3472<item><![CDATA[Medizingeschichte]]></item>
3473<item><![CDATA[Innere Medizin - Schwerpunkt Infektiologie]]></item>
3474<item><![CDATA[KieferorthopÀdie]]></item>
3475<item><![CDATA[andere Spezialgebiete]]></item>
3476<item><![CDATA[Diagn. Radiologie - Schwerpunkt Kinderradiologie]]></item>
3477<item><![CDATA[Diagn. Radiologie - Schwerpunkt Neuroradiologie]]></item>
3478<item><![CDATA[Kinderheilkunde - Schwerpunkt Kinderkardiologie]]></item>
3479<item><![CDATA[Kinderheilkunde - Schwerpunkt Neonatologie]]></item>
3480<item><![CDATA[Oralchirurgie]]></item>
3481<item><![CDATA[Bakteriologie und Mykologie]]></item>
3482<item><![CDATA[Fische]]></item>
3483<item><![CDATA[Fleischhygiene]]></item>
3484<item><![CDATA[GeflÃŒgel]]></item>
3485<item><![CDATA[Kleintiere]]></item>
3486<item><![CDATA[Kleintiere - Teilgebiet Chirurgie]]></item>
3487<item><![CDATA[Kleintiere - Teilgebiet Innere Medizin]]></item>
3488<item><![CDATA[Klinische Laboratoriumsdiagnostik]]></item>
3489<item><![CDATA[Lebensmittel]]></item>
3490<item><![CDATA[Hygiene und Technologie der Milch]]></item>
3491<item><![CDATA[Parasitologie]]></item>
3492<item><![CDATA[Pathologie - Teilgebiet Toxikopathologie]]></item>
3493<item><![CDATA[Pferde]]></item>
3494<item><![CDATA[Pferde - Teilgebiet Chirurgie]]></item>
3495<item><![CDATA[Pferde - Teilgebiet Innere Medizin]]></item>
3496<item><![CDATA[Pferde - Teilgebiet OrthopÀdie]]></item>
3497<item><![CDATA[Physiologie und Physiologische Chemie]]></item>
3498<item><![CDATA[Reproduktionsmedizin]]></item>
3499<item><![CDATA[Rinder]]></item>
3500<item><![CDATA[Schafe und Ziegen]]></item>
3501<item><![CDATA[Schweine]]></item>
3502<item><![CDATA[TierernÀhrung und DiÀthetik]]></item>
3503<item><![CDATA[Tierhygiene]]></item>
3504<item><![CDATA[TropenveterinÀrmedizin]]></item>
3505<item><![CDATA[Versuchstierkunde]]></item>
3506<item><![CDATA[Virologie]]></item>
3507<item><![CDATA[Zoo- und Wildtiere]]></item>
3508<item><![CDATA[Ãᅵffentliches VeterinÀrwesen]]></item>
3509<item><![CDATA[Tierschutz]]></item>
3510<item><![CDATA[Radiologie/Strahlenkunde]]></item>
3511<item><![CDATA[Vorstand/GeschÀftsfÌhrung]]></item>
3512<item><![CDATA[Abteilungs-/Gruppen-/BU-Leiter/in]]></item>
3513<item><![CDATA[(Produkt-/Projekt-)Manager/in]]></item>
3514<item><![CDATA[Regional-/Bereichs-Leiter/in]]></item>
3515<item><![CDATA[AuÃᅵendienstmitarbeiter/in]]></item>
3516<item><![CDATA[Webmaster/IT]]></item>
3517<item><![CDATA[Sachbearbeiter/in]]></item>
3518<item><![CDATA[Sonstige]]></item>
3519<item><![CDATA[Medizinische Onkologie]]></item>
3520<item><![CDATA[Tropen- und Reisemedizin]]></item>
3521<item><![CDATA[Gyn - Schwerpkt GynÀkologische Onkologie]]></item>
3522<item><![CDATA[Gyn - Schwerpkt Geburtshilfe, fetomat. Med.]]></item>
3523<item><![CDATA[Gyn - Schwerpkt Repr.-Med., gyn. Endokrinol.]]></item>
3524<item><![CDATA[Oto-Rhino-Laryngologie - Schwerpkt Hals- und Gesichtschirurgie]]></item>
3525<item><![CDATA[Oto-Rhino-Laryngologie - Schwerpkt Phoniatrie]]></item>
3526<item><![CDATA[Kinder- und Jugendmedizin (allgemein) - Schwerpkt pÀd. Endokrinol.-Diabetol.]]></item>
3527<item><![CDATA[Kinder- und Jugendmedizin (allgemein) - Schwerpkt pÀd. Gastroenterologie]]></item>
3528<item><![CDATA[Kinder- und Jugendmedizin (allgemein) - Schwerpkt pÀdiatrische Kardiologie]]></item>
3529<item><![CDATA[Kinder- und Jugendmedizin (allgemein) - Schwerpkt Neonatologie]]></item>
3530<item><![CDATA[Kinder- und Jugendmedizin (allgemein) - Schwerpkt pÀdiatrische Nephrologie]]></item>
3531<item><![CDATA[Kinder- und Jugendmedizin (allgemein) - Schwerpkt NeuropÀdiatrie]]></item>
3532<item><![CDATA[Kinder- und Jugendmedizin (allgemein) - Schwerpkt pÀd. Onkologie-HÀmatologie]]></item>
3533<item><![CDATA[Kinder- und Jugendmedizin (allgemein) - Schwerpkt pÀdiatrische Pneumologie]]></item>
3534<item><![CDATA[Ophthalmologie - Schwerpkt Ophthalmochirurgie]]></item>
3535<item><![CDATA[Pathologie - Schwerpkt Zytopathologie]]></item>
3536<item><![CDATA[Pathologie - Schwerpkt Neuropathologie]]></item>
3537<item><![CDATA[Pathologie - Schwerpkt Molekularpathologie]]></item>
3538<item><![CDATA[Urologie - Schwerpkt Operative Urologie]]></item>
3539<item><![CDATA[Radiologie - Schwerpkt PÀdiatrische Radiologie]]></item>
3540<item><![CDATA[Radiologie - Schwerpkt Diagn. Neuroradiologie]]></item>
3541<item><![CDATA[Radiologie - Schwerpkt Invasive Neuroradiologie]]></item>
3542<item><![CDATA[Herz-/ Thoraxchirurgie]]></item>
3543<item><![CDATA[Herz-/ Thoraxchirurgie - Schwerp. GefÀÃᅵchirurgie]]></item>
3544<item><![CDATA[Herz-/ Thoraxchirurgie - Schwerp. Thoraxchirurgie]]></item>
3545<item><![CDATA[Pharmazeut. Medizin]]></item>
3546<item><![CDATA[Chirurgie - Schwerpunkt Handchirurgie]]></item>
3547<item><![CDATA[Kinderchirurgie]]></item>
3548<item><![CDATA[OrthopÀdische Chirurgie]]></item>
3549<item><![CDATA[Plastische, Rekonstruktive und Ãᅵsthetische Chirurgie]]></item>
3550<item><![CDATA[Allgemeinmedizin - Schwerpunkt Geriatrie]]></item>
3551</list>
3552</item>
3553<item key="mandatory" type="int">0</item>
3554<item key="multilang" type="int">0</item>
3555<item key="name"><![CDATA[Discipline]]></item>
3556<item key="repetitive" type="int">0</item>
3557<item key="type"><![CDATA[select]]></item>
3558</dictionary>
3559</item>
3560<item type="dictionary"><dictionary>
3561<item key="custom"/>
3562<item key="default"/>
3563<item key="id"><![CDATA[profileImage]]></item>
3564<item key="keys" type="list"><list>
3565</list>
3566</item>
3567<item key="mandatory" type="int">0</item>
3568<item key="multilang" type="int">0</item>
3569<item key="name"><![CDATA[Image]]></item>
3570<item key="repetitive" type="int">0</item>
3571<item key="type"><![CDATA[image]]></item>
3572</dictionary>
3573</item>
3574<item type="dictionary"><dictionary>
3575<item key="custom"/>
3576<item key="default"/>
3577<item key="id"><![CDATA[profileCompany]]></item>
3578<item key="keys" type="list"><list>
3579</list>
3580</item>
3581<item key="mandatory" type="int">0</item>
3582<item key="multilang" type="int">0</item>
3583<item key="name"><![CDATA[Company]]></item>
3584<item key="repetitive" type="int">0</item>
3585<item key="type"><![CDATA[string]]></item>
3586</dictionary>
3587</item>
3588<item type="dictionary"><dictionary>
3589<item key="custom"/>
3590<item key="default"/>
3591<item key="id"><![CDATA[profileRole]]></item>
3592<item key="keys" type="list"><list>
3593<item><![CDATA[Participant]]></item>
3594<item><![CDATA[Tutor]]></item>
3595<item><![CDATA[Moderator]]></item>
3596</list>
3597</item>
3598<item key="mandatory" type="int">0</item>
3599<item key="multilang" type="int">0</item>
3600<item key="name"><![CDATA[Role]]></item>
3601<item key="repetitive" type="int">0</item>
3602<item key="type"><![CDATA[select]]></item>
3603</dictionary>
3604</item>
3605<item type="dictionary"><dictionary>
3606<item key="custom"/>
3607<item key="default"/>
3608<item key="id"><![CDATA[profileStreet]]></item>
3609<item key="keys" type="list"><list>
3610</list>
3611</item>
3612<item key="mandatory" type="int">0</item>
3613<item key="multilang" type="int">0</item>
3614<item key="name"><![CDATA[Street / No.]]></item>
3615<item key="repetitive" type="int">0</item>
3616<item key="type"><![CDATA[string]]></item>
3617</dictionary>
3618</item>
3619<item type="dictionary"><dictionary>
3620<item key="custom"/>
3621<item key="default"/>
3622<item key="id"><![CDATA[profileZip]]></item>
3623<item key="keys" type="list"><list>
3624</list>
3625</item>
3626<item key="mandatory" type="int">0</item>
3627<item key="multilang" type="int">0</item>
3628<item key="name"><![CDATA[Zip]]></item>
3629<item key="repetitive" type="int">0</item>
3630<item key="type"><![CDATA[string]]></item>
3631</dictionary>
3632</item>
3633<item type="dictionary"><dictionary>
3634<item key="custom"/>
3635<item key="default"/>
3636<item key="id"><![CDATA[profileCity]]></item>
3637<item key="keys" type="list"><list>
3638</list>
3639</item>
3640<item key="mandatory" type="int">0</item>
3641<item key="multilang" type="int">0</item>
3642<item key="name"><![CDATA[City]]></item>
3643<item key="repetitive" type="int">0</item>
3644<item key="type"><![CDATA[string]]></item>
3645</dictionary>
3646</item>
3647<item type="dictionary"><dictionary>
3648<item key="custom"/>
3649<item key="default"/>
3650<item key="id"><![CDATA[profileCountry]]></item>
3651<item key="keys" type="list"><list>
3652<item><![CDATA[Afghanistan]]></item>
3653<item><![CDATA[Albania]]></item>
3654<item><![CDATA[Algeria]]></item>
3655<item><![CDATA[American Samoa]]></item>
3656<item><![CDATA[Andorra]]></item>
3657<item><![CDATA[Angola]]></item>
3658<item><![CDATA[Anguilla]]></item>
3659<item><![CDATA[Antarctica]]></item>
3660<item><![CDATA[Antigua And Barbuda]]></item>
3661<item><![CDATA[Argentina]]></item>
3662<item><![CDATA[Armenia]]></item>
3663<item><![CDATA[Aruba]]></item>
3664<item><![CDATA[Australia]]></item>
3665<item><![CDATA[Austria]]></item>
3666<item><![CDATA[Azerbaijan]]></item>
3667<item><![CDATA[Bahamas]]></item>
3668<item><![CDATA[Bahrain]]></item>
3669<item><![CDATA[Bangladesh]]></item>
3670<item><![CDATA[Barbados]]></item>
3671<item><![CDATA[Belarus]]></item>
3672<item><![CDATA[Belgium]]></item>
3673<item><![CDATA[Belize]]></item>
3674<item><![CDATA[Benin]]></item>
3675<item><![CDATA[Bermuda]]></item>
3676<item><![CDATA[Bhutan]]></item>
3677<item><![CDATA[Bolivia]]></item>
3678<item><![CDATA[Bosnia And Herzegowina]]></item>
3679<item><![CDATA[Botswana]]></item>
3680<item><![CDATA[Bouvet Island]]></item>
3681<item><![CDATA[Brazil]]></item>
3682<item><![CDATA[British Indian Ocean Territory]]></item>
3683<item><![CDATA[Brunei Darussalam]]></item>
3684<item><![CDATA[Bulgaria]]></item>
3685<item><![CDATA[Burkina Faso]]></item>
3686<item><![CDATA[Burundi]]></item>
3687<item><![CDATA[Cambodia]]></item>
3688<item><![CDATA[Cameroon]]></item>
3689<item><![CDATA[Canada]]></item>
3690<item><![CDATA[Cape Verde]]></item>
3691<item><![CDATA[Cayman Islands]]></item>
3692<item><![CDATA[Central African Republic]]></item>
3693<item><![CDATA[Chad]]></item>
3694<item><![CDATA[Chile]]></item>
3695<item><![CDATA[China]]></item>
3696<item><![CDATA[Christmas Island]]></item>
3697<item><![CDATA[Cocos (Keeling) Islands]]></item>
3698<item><![CDATA[Colombia]]></item>
3699<item><![CDATA[Comoros]]></item>
3700<item><![CDATA[Congo]]></item>
3701<item><![CDATA[Congo, The Democratic Republic Of The]]></item>
3702<item><![CDATA[Cook Islands]]></item>
3703<item><![CDATA[Costa Rica]]></item>
3704<item><![CDATA[Cote D'ivoire]]></item>
3705<item><![CDATA[Croatia (Local Name: Hrvatska)]]></item>
3706<item><![CDATA[Cuba]]></item>
3707<item><![CDATA[Cyprus]]></item>
3708<item><![CDATA[Czech Republic]]></item>
3709<item><![CDATA[Denmark]]></item>
3710<item><![CDATA[Djibouti]]></item>
3711<item><![CDATA[Dominica]]></item>
3712<item><![CDATA[Dominican Republic]]></item>
3713<item><![CDATA[East Timor]]></item>
3714<item><![CDATA[Ecuador]]></item>
3715<item><![CDATA[Egypt]]></item>
3716<item><![CDATA[El Salvador]]></item>
3717<item><![CDATA[Equatorial Guinea]]></item>
3718<item><![CDATA[Eritrea]]></item>
3719<item><![CDATA[Estonia]]></item>
3720<item><![CDATA[Ethiopia]]></item>
3721<item><![CDATA[Falkland Islands (Malvinas)]]></item>
3722<item><![CDATA[Faroe Islands]]></item>
3723<item><![CDATA[Fiji]]></item>
3724<item><![CDATA[Finland]]></item>
3725<item><![CDATA[France]]></item>
3726<item><![CDATA[France, Metropolitan]]></item>
3727<item><![CDATA[French Guiana]]></item>
3728<item><![CDATA[French Polynesia]]></item>
3729<item><![CDATA[French Southern Territories]]></item>
3730<item><![CDATA[Gabon]]></item>
3731<item><![CDATA[Gambia]]></item>
3732<item><![CDATA[Georgia]]></item>
3733<item><![CDATA[Germany]]></item>
3734<item><![CDATA[Ghana]]></item>
3735<item><![CDATA[Gibraltar]]></item>
3736<item><![CDATA[Greece]]></item>
3737<item><![CDATA[Greenland]]></item>
3738<item><![CDATA[Grenada]]></item>
3739<item><![CDATA[Guadeloupe]]></item>
3740<item><![CDATA[Guam]]></item>
3741<item><![CDATA[Guatemala]]></item>
3742<item><![CDATA[Guinea]]></item>
3743<item><![CDATA[Guinea-Bissau]]></item>
3744<item><![CDATA[Guyana]]></item>
3745<item><![CDATA[Haiti]]></item>
3746<item><![CDATA[Heard And Mc Donald Islands]]></item>
3747<item><![CDATA[Holy See (Vatican City State)]]></item>
3748<item><![CDATA[Honduras]]></item>
3749<item><![CDATA[Hong Kong]]></item>
3750<item><![CDATA[Hungary]]></item>
3751<item><![CDATA[Iceland]]></item>
3752<item><![CDATA[India]]></item>
3753<item><![CDATA[Indonesia]]></item>
3754<item><![CDATA[Iran (Islamic Republic Of)]]></item>
3755<item><![CDATA[Iraq]]></item>
3756<item><![CDATA[Ireland]]></item>
3757<item><![CDATA[Israel]]></item>
3758<item><![CDATA[Italy]]></item>
3759<item><![CDATA[Jamaica]]></item>
3760<item><![CDATA[Japan]]></item>
3761<item><![CDATA[Jordan]]></item>
3762<item><![CDATA[Kazakhstan]]></item>
3763<item><![CDATA[Kenya]]></item>
3764<item><![CDATA[Kiribati]]></item>
3765<item><![CDATA[Korea, Democratic People's Republic Of]]></item>
3766<item><![CDATA[Korea, Republic Of]]></item>
3767<item><![CDATA[Kuwait]]></item>
3768<item><![CDATA[Kyrgyzstan]]></item>
3769<item><![CDATA[Lao People's Democratic Republic]]></item>
3770<item><![CDATA[Latvia]]></item>
3771<item><![CDATA[Lebanon]]></item>
3772<item><![CDATA[Lesotho]]></item>
3773<item><![CDATA[Liberia]]></item>
3774<item><![CDATA[Libyan Arab Jamahiriya]]></item>
3775<item><![CDATA[Liechtenstein]]></item>
3776<item><![CDATA[Lithuania]]></item>
3777<item><![CDATA[Luxembourg]]></item>
3778<item><![CDATA[Macau]]></item>
3779<item><![CDATA[Macedonia, The Former Yugoslav Republic Of]]></item>
3780<item><![CDATA[Madagascar]]></item>
3781<item><![CDATA[Malawi]]></item>
3782<item><![CDATA[Malaysia]]></item>
3783<item><![CDATA[Maldives]]></item>
3784<item><![CDATA[Mali]]></item>
3785<item><![CDATA[Malta]]></item>
3786<item><![CDATA[Marshall Islands]]></item>
3787<item><![CDATA[Martinique]]></item>
3788<item><![CDATA[Mauritania]]></item>
3789<item><![CDATA[Mauritius]]></item>
3790<item><![CDATA[Mayotte]]></item>
3791<item><![CDATA[Mexico]]></item>
3792<item><![CDATA[Micronesia, Federated States Of]]></item>
3793<item><![CDATA[Moldova, Republic Of]]></item>
3794<item><![CDATA[Monaco]]></item>
3795<item><![CDATA[Mongolia]]></item>
3796<item><![CDATA[Montserrat]]></item>
3797<item><![CDATA[Morocco]]></item>
3798<item><![CDATA[Mozambique]]></item>
3799<item><![CDATA[Myanmar]]></item>
3800<item><![CDATA[Namibia]]></item>
3801<item><![CDATA[Nauru]]></item>
3802<item><![CDATA[Nepal]]></item>
3803<item><![CDATA[Netherlands]]></item>
3804<item><![CDATA[Netherlands Antilles]]></item>
3805<item><![CDATA[New Caledonia]]></item>
3806<item><![CDATA[New Zealand]]></item>
3807<item><![CDATA[Nicaragua]]></item>
3808<item><![CDATA[Niger]]></item>
3809<item><![CDATA[Nigeria]]></item>
3810<item><![CDATA[Niue]]></item>
3811<item><![CDATA[Norfolk Island]]></item>
3812<item><![CDATA[Northern Mariana Islands]]></item>
3813<item><![CDATA[Norway]]></item>
3814<item><![CDATA[Oman]]></item>
3815<item><![CDATA[Pakistan]]></item>
3816<item><![CDATA[Palau]]></item>
3817<item><![CDATA[Panama]]></item>
3818<item><![CDATA[Papua New Guinea]]></item>
3819<item><![CDATA[Paraguay]]></item>
3820<item><![CDATA[Peru]]></item>
3821<item><![CDATA[Philippines]]></item>
3822<item><![CDATA[Pitcairn]]></item>
3823<item><![CDATA[Poland]]></item>
3824<item><![CDATA[Portugal]]></item>
3825<item><![CDATA[Puerto Rico]]></item>
3826<item><![CDATA[Qatar]]></item>
3827<item><![CDATA[Reunion]]></item>
3828<item><![CDATA[Romania]]></item>
3829<item><![CDATA[Russian Federation]]></item>
3830<item><![CDATA[Rwanda]]></item>
3831<item><![CDATA[Saint Kitts And Nevis]]></item>
3832<item><![CDATA[Saint Lucia]]></item>
3833<item><![CDATA[Saint Vincent And The Grenadines]]></item>
3834<item><![CDATA[Samoa]]></item>
3835<item><![CDATA[San Marino]]></item>
3836<item><![CDATA[Sao Tome And Principe]]></item>
3837<item><![CDATA[Saudi Arabia]]></item>
3838<item><![CDATA[Senegal]]></item>
3839<item><![CDATA[Seychelles]]></item>
3840<item><![CDATA[Sierra Leone]]></item>
3841<item><![CDATA[Singapore]]></item>
3842<item><![CDATA[Slovakia (Slovak Republic)]]></item>
3843<item><![CDATA[Slovenia]]></item>
3844<item><![CDATA[Solomon Islands]]></item>
3845<item><![CDATA[Somalia]]></item>
3846<item><![CDATA[South Africa]]></item>
3847<item><![CDATA[South Georgia And The South Sandwich Islands]]></item>
3848<item><![CDATA[Spain]]></item>
3849<item><![CDATA[Sri Lanka]]></item>
3850<item><![CDATA[St. Helena]]></item>
3851<item><![CDATA[St. Pierre And Miquelon]]></item>
3852<item><![CDATA[Sudan]]></item>
3853<item><![CDATA[Suriname]]></item>
3854<item><![CDATA[Svalbard And Jan Mayen Islands]]></item>
3855<item><![CDATA[Swaziland]]></item>
3856<item><![CDATA[Sweden]]></item>
3857<item><![CDATA[Switzerland]]></item>
3858<item><![CDATA[Syrian Arab Republic]]></item>
3859<item><![CDATA[Taiwan]]></item>
3860<item><![CDATA[Tajikistan]]></item>
3861<item><![CDATA[Tanzania, United Republic Of]]></item>
3862<item><![CDATA[Thailand]]></item>
3863<item><![CDATA[Togo]]></item>
3864<item><![CDATA[Tokelau]]></item>
3865<item><![CDATA[Tonga]]></item>
3866<item><![CDATA[Trinidad And Tobago]]></item>
3867<item><![CDATA[Tunisia]]></item>
3868<item><![CDATA[Turkey]]></item>
3869<item><![CDATA[Turkmenistan]]></item>
3870<item><![CDATA[Turks And Caicos Islands]]></item>
3871<item><![CDATA[Tuvalu]]></item>
3872<item><![CDATA[Uganda]]></item>
3873<item><![CDATA[Ukraine]]></item>
3874<item><![CDATA[United Arab Emirates]]></item>
3875<item><![CDATA[United Kingdom]]></item>
3876<item><![CDATA[United States]]></item>
3877<item><![CDATA[United States Minor Outlying Islands]]></item>
3878<item><![CDATA[Uruguay]]></item>
3879<item><![CDATA[Uzbekistan]]></item>
3880<item><![CDATA[Vanuatu]]></item>
3881<item><![CDATA[Venezuela]]></item>
3882<item><![CDATA[Viet Nam]]></item>
3883<item><![CDATA[Virgin Islands (British)]]></item>
3884<item><![CDATA[Virgin Islands (U.S.)]]></item>
3885<item><![CDATA[Wallis And Futuna Islands]]></item>
3886<item><![CDATA[Western Sahara]]></item>
3887<item><![CDATA[Yemen]]></item>
3888<item><![CDATA[Yugoslavia]]></item>
3889<item><![CDATA[Zambia]]></item>
3890<item><![CDATA[Zimbabwe]]></item>
3891</list>
3892</item>
3893<item key="mandatory" type="int">0</item>
3894<item key="multilang" type="int">0</item>
3895<item key="name"><![CDATA[Country]]></item>
3896<item key="repetitive" type="int">0</item>
3897<item key="type"><![CDATA[select]]></item>
3898</dictionary>
3899</item>
3900<item type="dictionary"><dictionary>
3901<item key="custom"/>
3902<item key="default"/>
3903<item key="id"><![CDATA[profileTel]]></item>
3904<item key="keys" type="list"><list>
3905</list>
3906</item>
3907<item key="mandatory" type="int">0</item>
3908<item key="multilang" type="int">0</item>
3909<item key="name"><![CDATA[Telephone]]></item>
3910<item key="repetitive" type="int">0</item>
3911<item key="type"><![CDATA[string]]></item>
3912</dictionary>
3913</item>
3914<item type="dictionary"><dictionary>
3915<item key="custom"/>
3916<item key="default"/>
3917<item key="id"><![CDATA[profileFax]]></item>
3918<item key="keys" type="list"><list>
3919</list>
3920</item>
3921<item key="mandatory" type="int">0</item>
3922<item key="multilang" type="int">0</item>
3923<item key="name"><![CDATA[Fax]]></item>
3924<item key="repetitive" type="int">0</item>
3925<item key="type"><![CDATA[string]]></item>
3926</dictionary>
3927</item>
3928<item type="dictionary"><dictionary>
3929<item key="custom"/>
3930<item key="default"/>
3931<item key="id"><![CDATA[profileWWW]]></item>
3932<item key="keys" type="list"><list>
3933</list>
3934</item>
3935<item key="mandatory" type="int">0</item>
3936<item key="multilang" type="int">0</item>
3937<item key="name"><![CDATA[Homepage  http://]]></item>
3938<item key="repetitive" type="int">0</item>
3939<item key="type"><![CDATA[string]]></item>
3940</dictionary>
3941</item>
3942<item type="dictionary"><dictionary>
3943<item key="custom"/>
3944<item key="default"/>
3945<item key="id"><![CDATA[profileCV]]></item>
3946<item key="keys" type="list"><list>
3947</list>
3948</item>
3949<item key="mandatory" type="int">0</item>
3950<item key="multilang" type="int">0</item>
3951<item key="name"><![CDATA[Biography (max 50 Words)]]></item>
3952<item key="repetitive" type="int">0</item>
3953<item key="type"><![CDATA[text]]></item>
3954</dictionary>
3955</item>
3956<item type="dictionary"><dictionary>
3957<item key="custom"/>
3958<item key="default"/>
3959<item key="id"><![CDATA[profilePublic]]></item>
3960<item key="keys" type="list"><list>
3961</list>
3962</item>
3963<item key="mandatory" type="int">0</item>
3964<item key="multilang" type="int">0</item>
3965<item key="name"><![CDATA[Publish profile]]></item>
3966<item key="repetitive" type="int">0</item>
3967<item key="type"><![CDATA[boolean]]></item>
3968</dictionary>
3969</item>
3970<item type="dictionary"><dictionary>
3971<item key="custom"/>
3972<item key="default"/>
3973<item key="id"><![CDATA[dlmtAuth]]></item>
3974<item key="keys" type="list"><list>
3975</list>
3976</item>
3977<item key="mandatory" type="int">0</item>
3978<item key="multilang" type="int">0</item>
3979<item key="name"><![CDATA[Authentication]]></item>
3980<item key="repetitive" type="int">0</item>
3981<item key="type"><![CDATA[delimiter]]></item>
3982</dictionary>
3983</item>
3984<item type="dictionary"><dictionary>
3985<item key="custom"/>
3986<item key="default"/>
3987<item key="id"><![CDATA[profileEmail]]></item>
3988<item key="keys" type="list"><list>
3989</list>
3990</item>
3991<item key="mandatory" type="int">1</item>
3992<item key="multilang" type="int">0</item>
3993<item key="name"><![CDATA[E-Mail]]></item>
3994<item key="repetitive" type="int">0</item>
3995<item key="type"><![CDATA[string]]></item>
3996</dictionary>
3997</item>
3998<item type="dictionary"><dictionary>
3999<item key="custom"/>
4000<item key="default"/>
4001<item key="id"><![CDATA[profilePasswd]]></item>
4002<item key="keys" type="list"><list>
4003</list>
4004</item>
4005<item key="mandatory" type="int">1</item>
4006<item key="multilang" type="int">0</item>
4007<item key="name"><![CDATA[Password]]></item>
4008<item key="repetitive" type="int">0</item>
4009<item key="type"><![CDATA[password]]></item>
4010</dictionary>
4011</item>
4012<item type="dictionary"><dictionary>
4013<item key="custom"/>
4014<item key="default"/>
4015<item key="id"><![CDATA[profileUniquekey]]></item>
4016<item key="keys" type="list"><list>
4017</list>
4018</item>
4019<item key="mandatory" type="int">0</item>
4020<item key="multilang" type="int">0</item>
4021<item key="name"><![CDATA[Uniquekey (DocCheck)]]></item>
4022<item key="repetitive" type="int">0</item>
4023<item key="type"><![CDATA[string]]></item>
4024</dictionary>
4025</item>
4026<item type="dictionary"><dictionary>
4027<item key="custom"/>
4028<item key="default"/>
4029<item key="id"><![CDATA[dlmtCourses]]></item>
4030<item key="keys" type="list"><list>
4031</list>
4032</item>
4033<item key="mandatory" type="int">0</item>
4034<item key="multilang" type="int">0</item>
4035<item key="name"><![CDATA[Courses]]></item>
4036<item key="repetitive" type="int">0</item>
4037<item key="type"><![CDATA[delimiter]]></item>
4038</dictionary>
4039</item>
4040<item type="dictionary"><dictionary>
4041<item key="custom"/>
4042<item key="default"/>
4043<item key="id"><![CDATA[userObjTracks]]></item>
4044<item key="keys" type="list"><list>
4045</list>
4046</item>
4047<item key="mandatory" type="int">0</item>
4048<item key="multilang" type="int">0</item>
4049<item key="name"><![CDATA[Personal Tracks]]></item>
4050<item key="repetitive" type="int">1</item>
4051<item key="type"><![CDATA[userObjTrack]]></item>
4052</dictionary>
4053</item>
4054<item type="dictionary"><dictionary>
4055<item key="custom"><![CDATA[<!--// BO attr_dc_description //-->
4056
4057 <dtml-return "'['+getObjProperty('profileRole',REQUEST)+']'">
4058
4059<!--// EO attr_dc_description //-->]]></item>
4060<item key="default"/>
4061<item key="id"><![CDATA[attr_dc_description]]></item>
4062<item key="keys" type="list"><list>
4063</list>
4064</item>
4065<item key="mandatory" type="int">0</item>
4066<item key="multilang" type="int">0</item>
4067<item key="name"><![CDATA[DC.Description]]></item>
4068<item key="repetitive" type="int">0</item>
4069<item key="type"><![CDATA[method]]></item>
4070</dictionary>
4071</item>
4072<item type="dictionary"><dictionary>
4073<item key="custom"><![CDATA[<!--// BO initReq //-->
4074
4075 <dtml-call "REQUEST.set('actionId','ACTION%s'%meta_id)">
4076 <dtml-call "REQUEST.set('templateUrl','%s/bodyContentZMSCustom_%s'%(absolute_url(),meta_id))">
4077
4078<!--// EO initReq //-->]]></item>
4079<item key="default"/>
4080<item key="id"><![CDATA[initReq]]></item>
4081<item key="keys" type="list"><list>
4082</list>
4083</item>
4084<item key="mandatory" type="int">0</item>
4085<item key="multilang" type="int">0</item>
4086<item key="name"><![CDATA[Init request]]></item>
4087<item key="repetitive" type="int">0</item>
4088<item key="type"><![CDATA[method]]></item>
4089</dictionary>
4090</item>
4091<item type="dictionary"><dictionary>
4092<item key="custom"><![CDATA[<!--// BO manageProfile //-->
4093
4094<dtml-let valid_types="['boolean','string','text','password','select']">
4095
4096<dtml-if "REQUEST.get('btn','')==getLangStr('BTN_SAVE',lang)">
4097 <dtml-call "setObjStateModified(REQUEST)">
4098 <dtml-in "getMetaobjAttrIds(meta_id)">
4099  <dtml-let metaObjAttr="getMetaobjAttr(meta_id,_['sequence-item'])">
4100   <dtml-if "metaObjAttr['type'] in valid_types and not metaObjAttr['id'] in ['_title','_titlealt','profileRole','profileUniquekey']">
4101    <dtml-call "setReqProperty(metaObjAttr['id'],REQUEST)">
4102   </dtml-if>
4103  </dtml-let>
4104 </dtml-in>
4105 <dtml-call "onChangeObj(REQUEST)">
4106 <div style="border: solid 1px black; color: maroon; padding:5px">
4107  <dtml-var "getLangStr('MSG_CHANGED',lang)"> (<dtml-var "getLangFmtDate(ZopeTime(),lang,'DATETIME_FMT')">)
4108 </div>
4109 <br/><br/>
4110</dtml-if>
4111
4112<form name="form0" action="<dtml-var URL>" method="post" encoding="multipart/form-data">
4113<input type="hidden" name="<dtml-var actionId>" value="<dtml-var "REQUEST[actionId]">">
4114<table cellspacing="0" cellpadding="1" border="1">
4115<dtml-in "getMetaobjAttrIds(meta_id)">
4116 <dtml-let metaObjAttr="getMetaobjAttr(meta_id,_['sequence-item'])">
4117  <dtml-if "metaObjAttr['type'] in valid_types and not metaObjAttr['id'] in ['_title','_titlealt','profileRole','profileUniquekey']">
4118   <tr>
4119    <td><dtml-var "getLangStr(metaObjAttr['id'],lang)"></td>
4120    <td><dtml-var "getObjInput(metaObjAttr['id'],REQUEST)">
4121   </tr>
4122  </dtml-if>
4123 </dtml-let>
4124</dtml-in>
4125<tr>
4126 <td>&nbsp;</td>
4127 <td><input type="submit" name="btn" value="<dtml-var "getLangStr('BTN_SAVE',lang)">">
4128</tr>
4129</table>
4130</form>
4131
4132</dtml-let>
4133
4134<!--// EO manageProfile //-->]]></item>
4135<item key="default"/>
4136<item key="id"><![CDATA[manageProfile]]></item>
4137<item key="keys" type="list"><list>
4138</list>
4139</item>
4140<item key="mandatory" type="int">0</item>
4141<item key="multilang" type="int">0</item>
4142<item key="name"><![CDATA[Manage profile]]></item>
4143<item key="repetitive" type="int">0</item>
4144<item key="type"><![CDATA[method]]></item>
4145</dictionary>
4146</item>
4147<item type="dictionary"><dictionary>
4148<item key="custom"><![CDATA[<!--// BO displayProfile //-->
4149
4150<table>
4151<tr>
4152<td valign="top">
4153<dtml-if "getObjProperty('profileImage',REQUEST)">
4154<img src="<dtml-var "getObjProperty('profileImage',REQUEST).getHref(REQUEST)">">
4155</dtml-if>
4156</td>
4157<td>
4158<table>
4159<tr class="neutralColorLight0">
4160<td colspan="2"><strong>
4161  <dtml-var "getObjProperty('profileFirstname',REQUEST)">
4162  <dtml-var "getObjProperty('profileLastname',REQUEST)"></strong>
4163</td>
4164</tr>
4165
4166<dtml-let valid_types="['string','text','select']">
4167<dtml-in "getMetaobjAttrIds(meta_id)">
4168 <dtml-let metaObjAttr="getMetaobjAttr(meta_id,_['sequence-item'])">
4169  <dtml-if "metaObjAttr['type'] in valid_types
4170       and not metaObjAttr['id'] in ['_title','_titlealt','profileRole','profileUniquekey','profileLastname','profileFirstname','profileSalutation','profileWWW','profileEmail','profileCV']">
4171   <tr class="neutralColorLight0">
4172    <td ><dtml-var "getLangStr(metaObjAttr['id'],lang)">:</td>
4173    <td ><dtml-var "getObjProperty(metaObjAttr['id'],REQUEST)">
4174   </tr>
4175  </dtml-if>
4176 </dtml-let>
4177</dtml-in>
4178</dtml-let>
4179
4180<tr valign="top" class="neutralColorLight0">
4181 <td><dtml-var "getLangStr('profileEmail',lang)">:</td>
4182 <td><a href="mailto:<dtml-var "getObjProperty('profileEmail',REQUEST)">"><dtml-var "getObjProperty('profileEmail',REQUEST)"></a></td>
4183</tr>
4184<tr valign="top" class="neutralColorLight0">
4185 <td><dtml-var "getLangStr('profileWWW',lang)">:</td>
4186 <td><a href="<dtml-var "getObjProperty('profileWWW',REQUEST)">"><dtml-var "getObjProperty('profileWWW',REQUEST)"></a></td>
4187</tr>
4188<tr valign="top" class="neutralColorLight0">
4189 <td><dtml-var "getLangStr('profileCV',lang)">:</td>
4190 <td><dtml-var "getObjProperty('profileCV',REQUEST)" newline_to_br html_quote></td>
4191</tr>
4192<tr valign="top" class="neutralColorLight0">
4193 <td><dtml-var "getLangStr('LMS_COURSES',lang)">:</td>
4194 <td><dtml-var "getObjProperty('displayCourses',REQUEST)"></td>
4195</tr>
4196</table>
4197</td>
4198</tr>
4199</table>
4200
4201<!--// EO displayProfile //-->]]></item>
4202<item key="default"/>
4203<item key="id"><![CDATA[displayProfile]]></item>
4204<item key="keys" type="list"><list>
4205</list>
4206</item>
4207<item key="mandatory" type="int">0</item>
4208<item key="multilang" type="int">0</item>
4209<item key="name"><![CDATA[Display profile]]></item>
4210<item key="repetitive" type="int">0</item>
4211<item key="type"><![CDATA[method]]></item>
4212</dictionary>
4213</item>
4214<item type="dictionary"><dictionary>
4215<item key="custom"><![CDATA[<!--// BO displayCourses //-->
4216
4217 <ul>
4218 <dtml-in "getObjChildren('userObjTracks',REQUEST)">
4219  <dtml-let ob="getLinkObj(getObjProperty('attrRef',REQUEST),REQUEST)">
4220   <dtml-if ob>
4221    <dtml-with ob>
4222     <dtml-if "isMetaType('courseMembers')">
4223      <dtml-with "getParentNode()">
4224       <li><a href="<dtml-var "getHref2IndexHtml(REQUEST)">"><dtml-var "getTitle(REQUEST)"></a></li>
4225      </dtml-with>
4226     </dtml-if>
4227    </dtml-with>
4228   </dtml-if>
4229  </dtml-let>
4230 </dtml-in>
4231 </ul>
4232
4233<!--// EO displayCourses //-->]]></item>
4234<item key="default"/>
4235<item key="id"><![CDATA[displayCourses]]></item>
4236<item key="keys" type="list"><list>
4237</list>
4238</item>
4239<item key="mandatory" type="int">0</item>
4240<item key="multilang" type="int">0</item>
4241<item key="name"><![CDATA[Display courses]]></item>
4242<item key="repetitive" type="int">0</item>
4243<item key="type"><![CDATA[method]]></item>
4244</dictionary>
4245</item>
4246<item type="dictionary"><dictionary>
4247<item key="custom"><![CDATA[<!--// BO onChangeObjEvt //-->
4248
4249 <dtml-call "REQUEST.set('rtn','')">
4250
4251 <dtml-call "setObjProperty('_titlealt',getObjProperty('profileLastname',REQUEST)+', '+getObjProperty('profileFirstname',REQUEST)[0]+'.',lang)">
4252 <dtml-call "setObjProperty('_title',(getObjProperty('profileAcademic',REQUEST)+' '+getObjProperty('profileFirstname',REQUEST)+' '+getObjProperty('profileLastname',REQUEST)).strip(),lang)">
4253
4254 <dtml-if "inObjStates(['STATE_NEW'],REQUEST)">
4255  <dtml-try>
4256  <dtml-call "REQUEST.set('newId',getObjProperty('profileEmail',REQUEST))">
4257  <dtml-call "REQUEST.set('newPassword',getObjProperty('profilePasswd',REQUEST))">
4258  <dtml-call "REQUEST.set('newRoles',[])">
4259  <dtml-call "REQUEST.set('newDomains',[])">
4260  <dtml-call "getUserFolder().userFolderAddUser(REQUEST['newId'],REQUEST['newPassword'],REQUEST['newRoles'],REQUEST['newDomains'])">
4261  <dtml-call "setUserAttr(REQUEST['newId'],'profile',getRefObjPath(this()))">
4262  <dtml-call "REQUEST.set('rtn',rtn+'%s %s...\n'%(getLangStr('LMS_MEMBER_CREATED',lang),REQUEST['newId']))">
4263  <dtml-except></dtml-try>
4264 </dtml-if>
4265
4266 <dtml-if "inObjStates(['STATE_MODIFIED'],REQUEST)">
4267  <dtml-try>
4268  <dtml-let userObj="getUserFolder().getUser(getObjProperty('profileEmail',REQUEST))">
4269   <dtml-if userObj>
4270    <dtml-if "operator_getattr(userObj,'__')!=getObjProperty('profilePasswd',REQUEST)">
4271     <dtml-call "operator_setattr(userObj,'__',getObjProperty('profilePasswd',REQUEST))">
4272     <dtml-call "manage_zmi_logout(REQUEST,RESPONSE)">
4273     <dtml-call "REQUEST.set('rtn',rtn+'%s %s...\n'%(getLangStr('LMS_MEMBER_PW_MODIFIED',lang),userObj.getId()))">
4274    </dtml-if>
4275   </dtml-if>
4276  </dtml-let>
4277  <dtml-except></dtml-try>
4278 </dtml-if>
4279
4280 <dtml-if "inObjStates(['STATE_DELETED'],REQUEST)">
4281  <dtml-try>
4282  <dtml-call "REQUEST.set('names',[getObjProperty('profileEmail',REQUEST)])">
4283  <dtml-call "getUserFolder().userFolderDelUsers(REQUEST['names'])">
4284  <dtml-call "REQUEST.set('rtn',rtn+'%s %s...\n'%(getLangStr('LMS_MEMBER_DELETED',lang),REQUEST['names'][0]))">
4285  <dtml-except></dtml-try>
4286 </dtml-if>
4287
4288 <dtml-return "REQUEST.get('rtn')">
4289
4290<!--// EO onChangeObjEvt //-->]]></item>
4291<item key="default"/>
4292<item key="id"><![CDATA[onChangeObjEvt]]></item>
4293<item key="keys" type="list"><list>
4294</list>
4295</item>
4296<item key="mandatory" type="int">0</item>
4297<item key="multilang" type="int">0</item>
4298<item key="name"><![CDATA[Event: Change]]></item>
4299<item key="repetitive" type="int">0</item>
4300<item key="type"><![CDATA[method]]></item>
4301</dictionary>
4302</item>
4303</list>
4304</item>
4305<item key="access" type="dictionary"><dictionary>
4306<item key="edit" type="list"><list>
4307<item><![CDATA[ZMSAdministrator]]></item>
4308<item><![CDATA[ZMSAuthor]]></item>
4309<item><![CDATA[ZMSEditor]]></item>
4310</list>
4311</item>
4312<item key="insert" type="list"><list>
4313<item><![CDATA[ZMSAdministrator]]></item>
4314<item><![CDATA[ZMSAuthor]]></item>
4315<item><![CDATA[ZMSEditor]]></item>
4316</list>
4317</item>
4318</dictionary>
4319</item>
4320<item key="acquired" type="int">0</item>
4321<item key="name"><![CDATA[Personal-Profile]]></item>
4322<item key="package"><![CDATA[com.zms.elc.lms]]></item>
4323<item key="type"><![CDATA[ZMSDocument]]></item>
4324</dictionary>
4325</item>
4326</dictionary>
4327</item>
4328</list>
Note: See TracBrowser for help on using the repository browser.