Project

General

Profile

1
<?xml version="1.0"?>
2
<!--
3
*  '$RCSfile$'
4
*      Authors: Matt Jones, CHad Berkley
5
*    Copyright: 2000 Regents of the University of California and the
6
*               National Center for Ecological Analysis and Synthesis
7
*  For Details: http://www.nceas.ucsb.edu/
8
*
9
*   '$Author: leinfelder $'
10
*     '$Date: 2008-10-30 13:11:53 -0700 (Thu, 30 Oct 2008) $'
11
* '$Revision: 4495 $'
12
*
13
* This program is free software; you can redistribute it and/or modify
14
* it under the terms of the GNU General Public License as published by
15
* the Free Software Foundation; either version 2 of the License, or
16
* (at your option) any later version.
17
*
18
* This program is distributed in the hope that it will be useful,
19
* but WITHOUT ANY WARRANTY; without even the implied warranty of
20
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
21
* GNU General Public License for more details.
22
*
23
* You should have received a copy of the GNU General Public License
24
* along with this program; if not, write to the Free Software
25
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
26
*
27
* This is an XSLT (http://www.w3.org/TR/xslt) stylesheet designed to
28
* convert an XML file showing the resultset of a query
29
* into an HTML format suitable for rendering with modern web browsers.
30
-->
31
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
32

    
33
	<xsl:output method="html"/>
34
	<xsl:param name="sessid"/>
35
	<xsl:param name="qformat">default</xsl:param>
36
	<xsl:param name="enableediting">false</xsl:param>
37
	<xsl:param name="contextURL"/>
38
	<xsl:template match="/">
39
		<script language="JavaScript">
40
          <![CDATA[
41
          submitform = function(action,docid,form_ref) {
42
              form_ref.action.value=action;
43
              form_ref.docid.value=docid;
44
              form_ref.sessionid.value="]]><xsl:value-of select="$sessid" /><![CDATA[";
45
              form_ref.qformat.value="first";
46
              form_ref.insertTemplate.value="1";
47
              form_ref.submit();
48
          }
49
          setSelect = function(form_ref, checkBoxName, checked) {
50
              var formElements = form_ref.elements;
51
              for (var i=0; i<formElements.length; i++) {
52
              	var myElement = formElements[i];
53
              	if (myElement.name == checkBoxName) {
54
              		myElement.checked = checked;
55
              	}
56
              }
57
          }    
58
          ]]>
59
        </script>
60
        <script type="text/javascript" language="Javascript">
61
			<![CDATA[
62
			downloadMergedResponseData = function(formId, fieldFormId) {
63
			
64
				var submitFormObj = document.getElementById(formId);
65
				submitFormObj.qformat.value = 'csv';
66
				submitFormObj.action.value = 'dataquery';
67
				
68
				//the form that holds the metadata field mappings - but in the header!
69
				var fieldFormObj = 
70
					getIframeDocument("iframeheaderclass").getElementById(fieldFormId);
71
				//alert("fieldFormObj: " + fieldFormObj);
72
				
73
				multipleAssessmentSearch(submitFormObj, fieldFormObj);
74
				
75
				submitFormObj.submit();
76
			}
77
			editCart = function(formId, operation, docid) {
78
			
79
				var metacatURL = "]]><xsl:value-of select="$contextURL" /><![CDATA[/metacat";
80
				//if (!areItemsSelected('docid') && docid) {
81
				//	alert("Please select at least one dataset");
82
				//	return false;
83
				//}
84
				
85
				var submitFormObj = document.getElementById(formId);
86
				submitFormObj.qformat.value = 'first';
87
				submitFormObj.action.value = 'editcart';
88
				submitFormObj.operation.value = operation;
89
				if (docid) {
90
					submitFormObj.docid.value = docid;
91
				}
92
				
93
				var myUpdate = new Ajax.Request(
94
					metacatURL,
95
					{	method: 'post',
96
						parameters: Form.serialize(submitFormObj),
97
						evalScripts: true,
98
						onSuccess: function(transport) {
99
							//alert('Cart changes saved: ' + operation); 
100
							//if we are in the cart, we should refresh the entire page
101
							if (document.getElementById("ajaxCartResults")) {
102
								window.location.reload();
103
							}
104
							else {
105
								window.document.getElementById("iframeheaderclass").src=window.document.getElementById("iframeheaderclass").src;
106
								//now check the cart contents and update those icons (but wait a second)
107
								setTimeout("setAllCartIcons()", 1000);
108
							}
109
						}, 
110
						onFailure: function(transport) {alert('failure making ajax call');}
111
					 });
112
								
113
			}
114
			read = function(formId, docid, divId) {
115
			
116
				//alert("divId: " + divId);
117
				
118
				var metacatURL = "]]><xsl:value-of select="$contextURL" /><![CDATA[/metacat";
119
				
120
				var submitFormObj = document.getElementById(formId);
121
				submitFormObj.qformat.value = 'first';
122
				submitFormObj.action.value = 'read';
123
				submitFormObj.docid.value = docid;
124
				submitFormObj.insertTemplate.value = '0';
125
				
126
				var myUpdate = new Ajax.Updater(
127
					divId,
128
					metacatURL,
129
					{	method: 'post',
130
						parameters: Form.serialize(submitFormObj),
131
						evalScripts: true,
132
						onSuccess: function(transport) {showDiv(divId); }, 
133
						onFailure: function(transport) {alert('failure making ajax call');}
134
					 });
135
								
136
			}
137
			areItemsSelected = function(checkBoxName) {
138
				var checkBoxes = document.getElementsByName(checkBoxName);
139
				
140
				for (var i=0; i< checkBoxes.length; i++) {
141
					if (checkBoxes[i].checked == true) {
142
						return true;
143
					}	
144
				}
145
				//alert("please select a checkbox: " + checkBoxName);
146
				return false;
147
				
148
			}
149
			setControlVisibility = function() {
150
				if (document.getElementById("ajaxCartResults")) {
151
					new Effect.Appear("download");
152
				}
153
			}	
154
			isInCart = function(docid) {
155
		
156
				//look up the cart in the header
157
				var doc = getIframeDocument("iframeheaderclass");
158
				var objs = doc.getElementsByName("@packageId");
159
				
160
				if (objs.length == 0) {
161
					return false;
162
				}
163
				for (var i=0; i< objs.length; i++) {
164
					if (docid == objs[i].value) {
165
						return true;
166
					}
167
				}
168
				return false;
169
			}			
170
			hideDiv = function(divId) {
171
				new Effect.Puff(divId);
172
				//Element.hide(divId);
173
			}
174
			showDiv = function(divId) {
175
				new Effect.Appear(divId)
176
				//Element.show(divId);
177
			}
178
			setAllCartIcons = function() {
179
				var docids = document.getElementsByName('docid');
180
				for (var i=0; i< docids.length; i++) {
181
					var docid = docids[i].value;
182
					if (docid != "") {
183
						setCartIcon(docid);
184
					}	
185
				}
186
			}
187
			setCartIcon = function(docid) {
188
				//show or hide the div
189
				//alert("setting icon for: " + docid);
190
				if (isInCart(docid)) {
191
					hideDiv("ajaxDiv" + docid + "add");
192
					showDiv("ajaxDiv" + docid + "remove");
193
				}
194
				else {
195
					hideDiv("ajaxDiv" + docid + "remove");
196
					showDiv("ajaxDiv" + docid + "add");
197
				}
198
			}
199
			
200
		 ]]>	
201
		</script>
202
        
203
		<p class="emphasis">Assessments found: <xsl:number value="count(resultset/document)" /></p>      
204
      
205
		<!-- This tests to see if there are returned documents,
206
            if there are not then don't show the query results -->
207

    
208
		<xsl:if test="count(resultset/document) &gt; 0">
209
			<script type="text/javascript" language="Javascript">
210
				<![CDATA[
211
					//call on load
212
					setControlVisibility();
213
				]]>	
214
			</script>
215
			<div id="download" style="display:none;">
216
				<p>
217
					<a>
218
						<xsl:attribute name="href">javascript:{}</xsl:attribute>
219
						<xsl:attribute name="onclick">javascript:downloadMergedResponseData('assessmentForm', 'fieldForm')</xsl:attribute>
220
						<img border="none">
221
							<xsl:attribute name="src">
222
								<xsl:value-of select="$contextURL" />
223
								<xsl:text>/style/images/page_white_put.png</xsl:text>
224
							</xsl:attribute>
225
						</img>
226
						<xsl:text> Download (.csv)</xsl:text>
227
					</a>
228
				</p>
229
			</div>
230
						
231
			<!-- for reading the assessment details -->
232
			<form action="{$contextURL}/metacat" method="POST" id="readForm" name="readForm" >
233
				<input type="hidden" name="qformat" value="first" />
234
				<input type="hidden" name="sessionid">
235
					<xsl:attribute name="value">
236
						<xsl:value-of select="$sessid" />						
237
					</xsl:attribute>
238
				</input>
239
				<input type="hidden" name="action" value="read" />
240
				<input type="hidden" name="docid" />
241
				<input type="hidden" name="insertTemplate" value="1"/>
242
			</form>
243
			
244
			<!-- for editing cart -->				
245
			<form action="{$contextURL}/metacat" method="POST" id="cartForm" name="cartForm" >
246
				<input type="hidden" name="qformat" value="first" />
247
				<input type="hidden" name="sessionid">
248
					<xsl:attribute name="value">
249
						<xsl:value-of select="$sessid" />						
250
					</xsl:attribute>
251
				</input>
252
				<input type="hidden" name="action" value="editcart" />
253
				<input type="hidden" name="operation" />
254
				<input type="hidden" name="docid" />
255

    
256
			</form>	
257
			
258
			<!-- for downloading data -->				
259
			<form action="{$contextURL}/metacat" method="POST" id="assessmentForm" name="assessmentForm" >
260
				<input type="hidden" name="qformat" value="first" />
261
				<input type="hidden" name="sessionid">
262
					<xsl:attribute name="value">
263
						<xsl:value-of select="$sessid" />						
264
					</xsl:attribute>
265
				</input>
266
				<input type="hidden" name="action" value="read" />
267
				<input type="hidden" name="dataquery" />
268
				<input type="hidden" name="operation" />
269
				
270
				<xsl:element name="input">
271
					<xsl:attribute name="type">hidden</xsl:attribute>
272
					<xsl:attribute name="id">questionId</xsl:attribute>
273
					<xsl:attribute name="name">questionId</xsl:attribute>
274
					<xsl:attribute name="value"></xsl:attribute>
275
				</xsl:element>
276
				
277
			<table width="95%" align="left" border="0" cellpadding="0"
278
				cellspacing="0">
279
				<tr>
280
					
281
					<th style="text-align: left" colspan="2">
282
						Assessment
283
					</th>
284
					<th style="text-align: left">
285
						Course Title
286
					</th>
287
					<th	style="text-align: left">
288
						Instructor[s]
289
					</th>
290
					<th	style="text-align: left">
291
						Organization[s]
292
					</th>
293
					<th	style="text-align: left">
294
						Keywords
295
					</th>
296
				</tr>
297

    
298
				<xsl:for-each select="resultset/document">
299
					<xsl:sort select="./param[@name='assessment/@id']" />
300
					<xsl:variable name="divId">
301
						<xsl:text>ajaxDiv</xsl:text><xsl:value-of select="./docid" />
302
					</xsl:variable>
303
					<tr valign="top" class="subpanel">
304
						<xsl:attribute name="class">
305
			               <xsl:choose>
306
			                 <xsl:when test="position() mod 2 = 1">rowodd</xsl:when>
307
			                 <xsl:when test="position() mod 2 = 0">roweven</xsl:when>
308
			               </xsl:choose>
309
			             </xsl:attribute>
310

    
311
						<td class="text_plain" nowrap="nowrap">
312
						
313
							<script type="text/javascript" language="Javascript">
314
								<![CDATA[
315
									//what are our options?
316
									if (isInCart("]]><xsl:value-of select="./docid" /><![CDATA[")) {
317
										showDiv("]]><xsl:value-of select="$divId" /><![CDATA[remove");
318
										hideDiv("]]><xsl:value-of select="$divId" /><![CDATA[add");
319
									}
320
									else {
321
										showDiv("]]><xsl:value-of select="$divId" /><![CDATA[add");
322
										hideDiv("]]><xsl:value-of select="$divId" /><![CDATA[remove");
323
									}
324
								]]>	
325
							</script>
326
							<div style="display:none;">
327
								<xsl:attribute name="id">
328
									<xsl:value-of select="$divId" />
329
									<xsl:text>add</xsl:text>
330
								</xsl:attribute>
331
								<a>
332
									<xsl:attribute name="href">javascript:{}</xsl:attribute>
333
									<xsl:attribute name="onclick"><![CDATA[javascript:editCart('cartForm', 'add',"]]><xsl:value-of select="./docid" /><![CDATA[")]]></xsl:attribute>
334
									<img border="none">
335
										<xsl:attribute name="src">
336
											<xsl:value-of select="$contextURL" />
337
											<xsl:text>/style/skins/first/images/cart_plus_sm.png</xsl:text>
338
										</xsl:attribute>
339
									</img>
340
								</a>
341
							</div>
342
							<div style="display:none;">
343
								<xsl:attribute name="id">
344
									<xsl:value-of select="$divId" />
345
									<xsl:text>remove</xsl:text>
346
								</xsl:attribute>
347
								<a>
348
									<xsl:attribute name="href">javascript:{}</xsl:attribute>
349
									<xsl:attribute name="onclick"><![CDATA[javascript:editCart('cartForm', 'remove',"]]><xsl:value-of select="./docid" /><![CDATA[")]]></xsl:attribute>
350
									<!--  <xsl:text>Remove </xsl:text> -->
351
									<img border="none">
352
										<xsl:attribute name="src">
353
											<xsl:value-of select="$contextURL" />
354
											<xsl:text>/style/skins/first/images/cart_minus_sm.png</xsl:text>
355
										</xsl:attribute>
356
									</img>
357
								</a>
358
							</div>
359

    
360
							<input type="hidden" name="docid">
361
								<xsl:attribute name="value">
362
									<xsl:value-of select="./docid" />
363
								</xsl:attribute>
364
							</input>
365
							
366
						</td>
367
						<td>
368
							
369
							<a>
370
								<xsl:attribute name="href">javascript:submitform('read','<xsl:value-of select="./docid" />',document.readForm)</xsl:attribute>
371
								<xsl:text>&#187;&#160;</xsl:text>
372
								<xsl:value-of select="./param[@name='assessment/@title']" />
373
							</a>
374
							(<xsl:value-of select="./docid" />)
375
							
376
							<br />
377
							
378
							<!--include question ids here -->
379
							<xsl:for-each select="./param[@name='assessmentItems/assessmentItem/assessmentItemId']" >
380
								<input type="hidden">
381
									<xsl:attribute name="name">
382
										<xsl:value-of select="../docid" />
383
									</xsl:attribute>
384
									<xsl:attribute name="value">
385
										<xsl:value-of select="." />
386
									</xsl:attribute>
387
								</input>
388
							</xsl:for-each>
389
							
390
							<br/>
391
														
392
						</td>
393

    
394
						<td class="text_plain">
395
							<xsl:for-each
396
								select="./param[@name='lom/general/title/string']">
397
								<xsl:value-of select="." />
398
								<br />
399
							</xsl:for-each>
400
						</td>
401
						<td class="text_plain">
402
							<xsl:for-each
403
								select="./param[@name='individualName/surName']">
404
								<xsl:value-of select="." />
405
								<br />
406
							</xsl:for-each>
407
						</td>
408
						<td class="text_plain">
409
							<xsl:for-each
410
								select="./param[@name='organizationName']">
411
								<xsl:value-of select="." />
412
								<br />
413
							</xsl:for-each>
414
						</td>
415

    
416
						<td class="text_plain">
417
							<xsl:for-each
418
								select="./param[@name='keyword']">
419
								<xsl:value-of select="." />
420
								<br />
421
							</xsl:for-each>
422
							<xsl:for-each
423
								select="./param[@name='lom/general/keyword/string']">
424
								<xsl:value-of select="." />
425
								<br />
426
							</xsl:for-each>
427

    
428
						</td>
429

    
430
					</tr>
431
					
432
					<tr>
433
						<td colspan="6">
434
							Details 
435
							<a>
436
								<xsl:attribute name="href">javascript:read('readForm', '<xsl:value-of select="./docid" />', '<xsl:value-of select="$divId" />')</xsl:attribute>
437
								<img border="none">
438
									<xsl:attribute name="src">
439
										<xsl:value-of select="$contextURL" />
440
										<xsl:text>/style/images/next.gif</xsl:text>
441
									</xsl:attribute>
442
								</img>
443
							</a>
444
							/
445
							<a>
446
								<xsl:attribute name="href">javascript:hideDiv('<xsl:value-of select="$divId" />')</xsl:attribute>
447
								<img border="none">
448
									<xsl:attribute name="src">
449
										<xsl:value-of select="$contextURL" />
450
										<xsl:text>/style/images/previous.gif</xsl:text>
451
									</xsl:attribute>
452
								</img>
453
							</a>
454
							
455
						</td>	
456
					</tr>
457
					
458
					<tr>
459
						<td colspan="6">
460
							<div style="display:none;">
461
								<xsl:attribute name="id">
462
									<xsl:value-of select="$divId" />
463
								</xsl:attribute>
464
								Assessment details...
465
							</div>
466
						</td>	
467
					</tr>
468
					
469
					<tr class="searchresultsdivider">
470
						<td colspan="6">
471
							<img
472
								src="{$contextURL}/style/skins/default/images/transparent1x1.gif"
473
								width="1" height="1" />
474
						</td>
475
					</tr>
476

    
477
				</xsl:for-each>
478
				
479
			</table>
480
			
481
			</form>
482

    
483
		</xsl:if>
484
	</xsl:template>
485

    
486
</xsl:stylesheet>
(4-4/19)