Project

General

Profile

1
<?xml version="1.0"?>
2

    
3
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
4

    
5
	<xsl:output omit-xml-declaration="yes" method="html" encoding="UTF-8" standalone="no" />
6

    
7
	<xsl:param name="profileId" />
8
	<xsl:param name="ifaceId" />
9
	<xsl:param name="protocol" />
10
	<xsl:param name="baseUrl" />
11
	<xsl:param name="compliance" />
12
	<xsl:param name="overrideCompliance" />
13
	<xsl:param name="typology" />
14
	<xsl:param name="prefix" />
15

    
16
	<xsl:template match="/">
17
		<div class="row" style="margin-bottom:20px;">
18
			<div class="col-xs-12 col-md-offset-2 col-md-8" style="border: 1px solid #dddddd; border-radius: 4px; padding: 20px">
19
				<xsl:apply-templates select="//CONFIGURATION|//extra_info/parameters" />
20
			</div>
21
		</div>
22
	</xsl:template>
23

    
24
	<xsl:template match="CONFIGURATION">
25

    
26
		<xsl:variable name="country" select="normalize-space(./COUNTRY)" />
27

    
28

    
29
		<form class="form-horizontal">
30
			<wf-form-row-static name="Datasource name" value="{./OFFICIAL_NAME}" />
31
			<xsl:choose>
32
				<xsl:when test="$typology = ./DATASOURCE_TYPE">
33
					<wf-form-row-static name="Typology" value="{$typology}" />
34
				</xsl:when>
35
				<xsl:otherwise>
36
					<wf-form-row-static name="Typology" value="{./DATASOURCE_TYPE} (datasource), {$typology} (API)" style="color: #dd9900" />
37
				</xsl:otherwise>
38
			</xsl:choose>
39
			<wf-form-row-link name="Institution" value="{./REPOSITORY_INSTITUTION}" url="{./REPOSITORY_WEBPAGE}" />
40
			<wf-form-row-link name="Contact email" value="{./ADMIN_INFO}" url="{./ADMIN_INFO}" />
41
			<xsl:choose>
42
				<xsl:when test="string-length($country) = 2">
43
					<wf-form-row-static-img name="Country" value="{$country}" img="../resources/img/flags/{$country}.gif" />
44
				</xsl:when>
45
				<xsl:otherwise>
46
					<wf-form-row-static name="Country" value="-" />
47
				</xsl:otherwise>
48
			</xsl:choose>
49
			<wf-form-row-static name="Software typology" value="{./TYPOLOGY}" />
50
		</form>
51
		<hr />
52
		<form class="form-horizontal">
53
			<div class="form-group" ng-init="newCompatibilityLevel='{$overrideCompliance}'" ng-class="{{'has-warning': newCompatibilityLevel}}">
54
				<label class="col-sm-3 control-label">Level of compliance</label>
55
				<div class="col-sm-9">
56
					<select class="form-control" ng-model="newCompatibilityLevel" ng-change="updateCompatibilityLevel('{$profileId}', '{$ifaceId}', newCompatibilityLevel)">
57
						<xsl:for-each select="//extra_info/compatibilityLevels/level">
58
							<option value="{.}">
59
								<xsl:value-of select="concat(., ' (override)')" />
60
							</option>
61
						</xsl:for-each>
62
						<option disabled="disabled" style="border-top: 1px solid lightgrey; margin-top: 10px;"></option>
63
						<option value="">
64
							<xsl:value-of select="concat($compliance, ' (by validator)')" />
65
						</option>
66
					</select>
67
				</div>
68
			</div>
69
		</form>
70
		<hr />
71
		<form class="form-horizontal">
72
			<wf-form-row-static name="API id" value="{$ifaceId}" />
73
			<wf-form-row-static name="Datasource id" value="{./DATASOURCE_ORIGINAL_ID}" />
74
			<wf-form-row-static name="Datasource prefix" value="{$prefix}" />
75
			<wf-form-row-link name="Profile" value="[link]" url="isManager.do#/profile/{$profileId}" />
76
		</form>
77
		<hr />
78
		<form class="form-horizontal">
79
			<div class="form-group">
80
				<label class="col-sm-3 control-label">Access Protocol</label>
81
				<div class="col-sm-9">
82
					<p class="form-control-static">
83
						<table class="table table-condensed table-striped">
84
							<tr>
85
								<th colspan="2">Protocol</th>
86
								<td class="col-xs-9">
87
									<xsl:value-of select="$protocol" />
88
									<xsl:if test="$protocol = 'oai' or $protocol = 'OAI'">
89
										<a href="oaiExplorer.do?oaiBaseUrl={$baseUrl}" class="btn btn-xs btn-primary pull-right">verify</a>
90
									</xsl:if>
91
								</td>
92
							</tr>
93
							<tr>
94
								<th colspan="2">Base URL</th>
95
								<td>
96
									<a href="{$baseUrl}">
97
										<xsl:value-of select="$baseUrl" />
98
									</a>
99
								</td>
100
							</tr>
101

    
102
							<xsl:variable name="countParams" select="count(//extra_info/parameters/param)" />
103
							<xsl:for-each select="//extra_info/parameters/param">
104
								<tr>
105
									<xsl:if test="position() = 1">
106
										<th rowspan="{$countParams}" class="col-xs-2">Parameters</th>
107
									</xsl:if>
108
									<td class="col-xs-2">
109
										<i>
110
											<xsl:value-of select="@name" />
111
										</i>
112
									</td>
113
									<td class="col-xs-8">
114
										<xsl:value-of select="." />
115
									</td>
116
								</tr>
117
							</xsl:for-each>
118
						</table>
119

    
120
					</p>
121
				</div>
122
			</div>
123
			<div class="form-group">
124
				<div class="col-sm-offset-3 col-sm-9">
125
					<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#editAccessParamsModal">configure</button>
126
				</div>
127
			</div>
128
		</form>
129
		<hr />
130
		<form class="form-horizontal">
131
			<div class="form-group">
132
				<label class="col-sm-3 control-label">API Extra fields</label>
133
				<div class="col-sm-9">
134
					<p class="form-control-static">
135
						<table class="table table-condensed table-striped">
136
							<xsl:for-each select="//extra_info/extraFields/field">
137
								<tr>
138
									<th class="col-xs-4">
139
										<xsl:value-of select="@name" />
140
									</th>
141
									<td class="col-xs-8">
142
										<xsl:value-of select="." />
143
									</td>
144
								</tr>
145
							</xsl:for-each>
146
						</table>
147
					</p>
148
				</div>
149
			</div>
150
			
151
		</form>
152
		<hr />
153
		<form class="form-horizontal">
154
			<div class="form-group">
155
				<label class="col-sm-3 control-label">Related workflows</label>
156
				<div class="col-sm-9">
157
					<p class="form-control-static">
158
						<xsl:choose>
159
							<xsl:when test="count(//workflows/workflow) = 0">
160
								No workflows							
161
							</xsl:when>
162
							<xsl:otherwise>
163
								<xsl:for-each select="//workflows/workflow">
164
									<a href="workflows.do#/wf/{@id}"><xsl:value-of select="@name" /></a><br />
165
									<xsl:if test="@description">
166
										<span class="small text-muted">
167
											<xsl:value-of select="@description"/>
168
										</span>
169
									</xsl:if>
170
								</xsl:for-each>
171
							</xsl:otherwise>
172
						</xsl:choose>
173
					</p>
174
				</div>
175
			</div>
176
			
177
			<div class="form-group">
178
				<div class="col-sm-offset-3 col-sm-9">
179
					<xsl:variable name="definitiveCompliance">
180
						<xsl:choose>
181
							<xsl:when test="$overrideCompliance">
182
								<xsl:value-of select="$overrideCompliance" />
183
							</xsl:when>
184
							<xsl:otherwise>
185
								<xsl:value-of select="$compliance" />
186
							</xsl:otherwise>
187
						</xsl:choose>
188
					</xsl:variable>
189
					<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#addWorkflowModal"
190
						ng-click="findRepoHiWorkflows('{normalize-space($definitiveCompliance)}', '{normalize-space($typology)}')">
191
						add workflow
192
					</button>
193
				</div>
194
			</div>
195
		</form>
196
		
197
		
198
		<div id="addWorkflowModal" class="modal fade" tabindex="-1" role="dialog">
199
			<div class="modal-dialog modal-lg">
200
				<div class="modal-content">
201
					<div class="modal-header">
202
						<button type="button" class="close" data-dismiss="modal">
203
							<xsl:text disable-output-escaping="yes"><![CDATA[&times;]]></xsl:text>
204
						</button>
205
						<h4 class="modal-title">Select workflow</h4>
206
					</div>
207
					<div class="modal-body">
208
						<div ng-repeat="e in availableRepohiWfs" class="panel panel-default">
209
							<div class="panel-heading">
210
								<a ng-click="newRepoWorkflow('{$profileId}', '{$ifaceId}', e.id)" data-dismiss="modal" href="javascript:void(0)">{{e.name}}</a>
211
								<a href="isManager.do#/profile/{{{{e.id}}}}" class="pull-right">[link]</a>
212
								<br /><span class="text-muted small">{{e.description}}</span>
213
							</div>
214
							<table class="table table-striped table-condensed small">
215
								<tr>
216
									<th class="col-xs-3 text-right">Typology prefixes</th>
217
									<td>{{e.ifaceTypes.join()}}</td>
218
								</tr><tr>
219
									<th class="col-xs-3 text-right">Compliance prefixes</th>
220
									<td>{{e.compliances.join()}}</td>
221
								</tr><tr ng-repeat="f in e.fields">
222
									<th class="col-xs-3 text-right">{{f.key}}</th>
223
									<td>{{f.value}}</td>
224
								</tr>
225
							</table>
226
						</div>
227
					</div>
228
					<div class="modal-footer">
229
						<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
230
					</div>
231
				</div>
232
			</div>
233
		</div>
234
	</xsl:template>
235

    
236
	<xsl:template match="parameters">
237
		<div id="editAccessParamsModal" class="modal fade" tabindex="-1" role="dialog">
238
			<div class="modal-dialog modal-lg">
239
				<div class="modal-content">
240
					<div class="modal-header">
241
						<button type="button" class="close" data-dismiss="modal">
242
							<xsl:text disable-output-escaping="yes"><![CDATA[&times;]]></xsl:text>
243
						</button>
244
						<h4 class="modal-title">
245
							<xsl:value-of select="concat('Protocol: ', $protocol)" />
246
						</h4>
247
					</div>
248
					<div class="modal-body">
249
							<form class="form-horizontal" role="form" ng-init="params.baseUrl = '{$baseUrl}'">
250
			
251
								<div class="form-group">
252
									<wf-form-row-text name="Base URL" mandatory="true" regex="^(http|https|ftp|ftps|sftp|file):\/\/" init-value="{$baseUrl}"
253
										ng-model="params.baseUrl" ng-original-model="originalParams.baseUrl" />
254

    
255
									<xsl:for-each select="./param">
256
										<xsl:choose>
257
											<xsl:when test="@functionPopulated = 'true' and @type = 'LIST'">
258
												<wf-form-row-multi-select name="{@name}" init-value="{.}" ng-model="params.{@name}" ng-original-model="originalParams.{@name}" values-function="obtainValues('listProtocolFieldValues',  {{ 'baseUrl': '{{{{params.baseUrl}}}}', 'protocol': '{$protocol}', 'field' : '{@name}' }} )">
259
													<xsl:if test="not(@optional) or @optional != 'true'">
260
														<xsl:attribute name="mandatory">true</xsl:attribute>
261
													</xsl:if>
262
													<xsl:if test="@regex">
263
														<xsl:attribute name="regex"><xsl:value-of select="@regex" /></xsl:attribute>
264
													</xsl:if>
265
												</wf-form-row-multi-select>
266
											</xsl:when>
267
											<xsl:when test="@functionPopulated = 'true' and @type != 'LIST'">
268
												<wf-form-row-select name="{@name}" init-value="{.}" ng-model="params.{@name}" ng-original-model="originalParams.{@name}" values-function="obtainValues('listProtocolFieldValues',  {{ 'baseUrl': '{{{{params.baseUrl}}}}', 'protocol': '{$protocol}', 'field' : '{@name}' }} )">
269
													<xsl:if test="not(@optional) or @optional != 'true'">
270
														<xsl:attribute name="mandatory">true</xsl:attribute>
271
													</xsl:if>
272
													<xsl:if test="@regex">
273
														<xsl:attribute name="regex"><xsl:value-of select="@regex" /></xsl:attribute>
274
													</xsl:if>
275
												</wf-form-row-select>
276
											</xsl:when>
277
											<xsl:otherwise>
278
												<wf-form-row-text name="{@name}" init-value="{.}" ng-model="params.{@name}" ng-original-model="originalParams.{@name}">
279
													<xsl:if test="not(@optional) or @optional != 'true'">
280
														<xsl:attribute name="mandatory">true</xsl:attribute>
281
													</xsl:if>
282
													<xsl:if test="@regex">
283
														<xsl:attribute name="regex"><xsl:value-of select="@regex" /></xsl:attribute>
284
													</xsl:if>
285
												</wf-form-row-text>
286
											</xsl:otherwise>
287
										</xsl:choose>
288
									</xsl:for-each>
289
								</div>
290
							</form>
291
					</div>
292
					<div class="modal-footer">
293
						<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
294
						<button type="button" class="btn btn-primary" data-dismiss="modal" ng-click="updateRepoApi('{$profileId}', '{$ifaceId}', params)">Save</button>
295
					</div>
296
				</div>
297
			</div>
298
		</div>
299
	</xsl:template>
300

    
301
</xsl:stylesheet>
(1-1/3)