source: main/trunk/model-sites-dev/eurovision-lod/collect/eurovision/transform/pages/document.xsl@ 36022

Last change on this file since 36022 was 36022, checked in by davidb, 2 years ago

Refined show-more for lyrics, where first verse/block is shown

File size: 17.1 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<xsl:stylesheet version="1.0"
3 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4 xmlns:java="http://xml.apache.org/xslt/java"
5 xmlns:util="xalan://org.greenstone.gsdl3.util.XSLTUtil"
6 xmlns:gslib="http://www.greenstone.org/skinning"
7 xmlns:gsf="http://www.greenstone.org/greenstone3/schema/ConfigFormat"
8 extension-element-prefixes="java util"
9 exclude-result-prefixes="java util gsf">
10
11 <!--
12 <img src="interfaces/{$interface_name}/images/iworld.gif"/>
13 -->
14
15 <xsl:template name="documentHeading">
16 <gsf:script src="sites/{$site_name}/collect/{$collName}/js/jquery.show-more.js"/>
17
18 <span style="font-weight:bold; font-size: 120%;">
19 <gsf:switch>
20 <gsf:metadata name='FromCountry'/>
21 <gsf:when test='exists'>
22 <gsf:metadata name='FromCountry'/>
23 voting in
24 <gsf:metadata name='FromCountryYear'/>
25 </gsf:when>
26 <gsf:otherwise>
27 <xsl:call-template name="choose-title"/>
28 </gsf:otherwise>
29 </gsf:switch>
30 </span>
31 <div style="clear:both;"><xsl:text> </xsl:text></div>
32
33 <div>
34 <style>
35 table.esc-metadata tr:nth-child(odd) {
36 background-color: rgba(255,255,255,0.2);
37 }
38 table.esc-metadata tr:nth-child(even) {
39 background-color: rgba(255,255,255,0.0);
40 }
41
42 table.esc-metadata {
43 margin-top: 5px;
44 min-width: 650px;
45 padding: 10px;
46 }
47 </style>
48
49 <!-- prov:wasDerivedFrom -->
50 <xsl:variable name="escyear"><gsf:metadata name="Year"/></xsl:variable>
51
52 <div style="float: right;">
53 <gsf:switch>
54 <gsf:metadata name='YearLogoImg'/>
55 <gsf:when test='exists'>
56 <style>
57 div.esc-logo { height: 100px; width: 180px;}
58 div.esc-logo img { width: 100%; height: 100%; object-fit: scale-down; background-color: #fff}
59 </style>
60 <div class="esc-logo">
61 <a target="_blank" class="esc-logo" title="Access Wikipedia article about the contenst this year"
62 href="https://en.wikipedia.org/wiki/Eurovision_Song_Contest_{$escyear}">
63 <gsf:metadata name="YearLogoImg"/>
64 <!--
65 <img style="vertical-align: top;"
66 src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAVklEQVR4Xn3PgQkAMQhDUXfqTu7kTtkpd5RA8AInfArtQ2iRXFWT2QedAfttj2FsPIOE1eCOlEuoWWjgzYaB/IkeGOrxXhqB+uA9Bfcm0lAZuh+YIeAD+cAqSz4kCMUAAAAASUVORK5CYII="
67 alt="external link" />
68 -->
69 </a>
70 </div>
71 </gsf:when>
72 <gsf:otherwise>
73 <gsf:space/>
74 </gsf:otherwise>
75 </gsf:switch>
76 </div>
77
78 <table
79 prefix="mo: http://purl.org/ontology/mo/
80 dc: http://purl.org/dc/elements/1.1/
81 xsd: http://www.w3.org/2001/XMLSchema#
82 tl: http://purl.org/NET/c4dm/timeline.owl#
83 event: http://purl.org/NET/c4dm/event.owl#
84 foaf: http://xmlns.com/foaf/0.1/
85 rdfs: http://www.w3.org/2000/01/rdf-schema#"
86
87 class="esc-metadata" style="float: left;">
88
89 <gsf:switch>
90 <gsf:metadata name='FromCountry'/>
91 <gsf:when test='exists'>
92 <tr>
93 <td>
94 Voting Type:
95 </td>
96 <td>
97 <!--
98 <gsf:switch>
99 <gsf:metadata name='FromCountryType'/>
100 <gsf:when test="equals" test-value="J">
101 Jury
102 </gsf:when>
103 <gsf:when test="equals" test-value="T">
104 Televotes
105 </gsf:when>
106 <gsf:otherwise>
107 Separate Jury and Televotes Added Together
108 </gsf:otherwise>
109 </gsf:switch>
110
111 -->
112
113 <gsf:switch>
114 <gsf:metadata name='FromCountryNuancedType'/>
115 <gsf:when test="equals" test-value="J">
116 Jury
117 </gsf:when>
118 <gsf:when test="equals" test-value="T">
119 Televotes
120 </gsf:when>
121 <gsf:when test="equals" test-value="C">
122 Combined Jury and Televotes
123 </gsf:when>
124 <gsf:otherwise>
125
126 <gsf:switch>
127 <gsf:metadata name='FromCountryType'/>
128 <gsf:when test="equals" test-value="J">
129 Jury
130 </gsf:when>
131 <gsf:when test="equals" test-value="T">
132 Televotes
133 </gsf:when>
134 <gsf:otherwise> <!-- JT -->
135 Separate Jury and Televotes Added Together
136 </gsf:otherwise>
137 </gsf:switch>
138
139 </gsf:otherwise>
140 </gsf:switch>
141
142
143 </td>
144 </tr>
145 <tr>
146 <td>
147 Votes cast by:
148 </td>
149 <td>
150 <gsf:metadata name="FromCountry" highlight="highlight" />
151 </td>
152 </tr>
153 <tr>
154 <td>
155 Year:
156 </td>
157 <td>
158 <gsf:metadata name="FromCountryYear" highlight="highlight" />
159 </td>
160 </tr>
161 </gsf:when>
162
163 <gsf:otherwise>
164 <tr>
165 <td>
166 <!--
167 XX<xsl:value-of select="util:getInterfaceText($interface_name, /page/@lang, 'Artist')"/>XX
168 -->
169 Title:
170 </td>
171 <td>
172 <gsf:switch>
173 <gsf:metadata name='WikipediaURL_uri' />
174 <gsf:when test='exists'>
175
176 <a target="_blank">
177 <xsl:attribute name="href">
178 <gsf:metadata name="WikipediaURL_uri" />
179 </xsl:attribute>
180
181 <span typeof="mo:Track" about="#track-1">
182 <span property="dc:title"><gsf:metadata name="Title" highlight="highlight" /></span>
183 </span>
184 @ Wikipedia
185 <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAVklEQVR4Xn3PgQkAMQhDUXfqTu7kTtkpd5RA8AInfArtQ2iRXFWT2QedAfttj2FsPIOE1eCOlEuoWWjgzYaB/IkeGOrxXhqB+uA9Bfcm0lAZuh+YIeAD+cAqSz4kCMUAAAAASUVORK5CYII=" alt="external link" />
186 </a>
187 </gsf:when>
188 <gsf:otherwise>
189 <span typeof="mo:Track" about="#track-1">
190 <span property="dc:title"><gsf:metadata name="Title" highlight="highlight" /></span>
191 </span>
192 </gsf:otherwise>
193 </gsf:switch>
194 </td>
195 </tr>
196 </gsf:otherwise>
197 </gsf:switch>
198
199 <gsf:switch>
200 <gsf:metadata name='Creator'/>
201 <gsf:when test='exists'>
202 <tr>
203 <td>
204 Artist:
205 </td>
206 <td>
207 <span property="foaf:name"><gsf:metadata name="Creator" highlight="highlight" /></span>
208 </td>
209 </tr>
210 </gsf:when>
211 </gsf:switch>
212
213 <gsf:switch>
214 <gsf:metadata name='Country'/>
215 <gsf:when test='exists'>
216 <tr>
217 <td>
218 Country:
219 </td>
220 <td>
221
222 <gsf:switch>
223 <gsf:metadata name='FlagImg'/>
224 <gsf:when test='exists'>
225 <span style="padding-right: 6px;"><gsf:metadata name="FlagImg"/></span>
226 </gsf:when>
227 </gsf:switch>
228
229 <gsf:metadata name="Country" highlight="highlight" />
230
231 </td>
232 </tr>
233 </gsf:when>
234 </gsf:switch>
235
236 <gsf:switch>
237 <gsf:metadata name='Year'/>
238 <gsf:when test='exists'>
239 <tr>
240 <td>
241 Year:
242 </td>
243 <td>
244 <gsf:variable name="Year"><gsf:metadata name="Year"/></gsf:variable>
245 <span property="dc:coverage" datatype="xsd:date" content="{$Year}"><gsf:metadata name="Year" highlight="highlight" /></span>
246
247 <!--
248 <a target="_blank" href="https://en.wikipedia.org/wiki/Eurovision_Song_Contest_{$escyear}">
249 Eurovision <gsf:metadata name="Year" highlight="highlight" />
250 @ Wikipedia
251 <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAVklEQVR4Xn3PgQkAMQhDUXfqTu7kTtkpd5RA8AInfArtQ2iRXFWT2QedAfttj2FsPIOE1eCOlEuoWWjgzYaB/IkeGOrxXhqB+uA9Bfcm0lAZuh+YIeAD+cAqSz4kCMUAAAAASUVORK5CYII=" alt="external link" />
252 </a>
253 -->
254
255 </td>
256 </tr>
257 </gsf:when>
258 </gsf:switch>
259
260
261 <gsf:switch>
262 <gsf:metadata name='essentia.rhythm_bpm'/>
263 <gsf:when test='exists'>
264 <tr>
265 <td>
266 Beats per minute (bpm):
267 </td>
268 <td>
269 <gsf:variable name="BPM"><gsf:metadata name="essentia.rhythm_bpm" /></gsf:variable>
270 <span property="mo:bpm" datatype="xsd:float" content="{$BPM}" id="essentia-rhythm_bpm"></span>
271 <gsf:script>
272 $( document ).ready(function() {
273 var bpm = Math.round(gs.documentMetadata["essentia_rhythm_bpm"])
274 $("#essentia-rhythm_bpm").html(bpm)
275 })
276 </gsf:script>
277 </td>
278 </tr>
279 </gsf:when>
280 </gsf:switch>
281
282
283 <gsf:switch>
284 <gsf:metadata name='essentia.tonal_key_edma_key'/>
285 <gsf:when test='exists'>
286 <tr>
287 <td>
288 Estimated Key:
289 </td>
290 <td>
291 <gsf:metadata name="essentia.tonal_key_edma_key" highlight="highlight" /><gsf:space/><gsf:metadata name="essentia.tonal_key_edma_scale" highlight="highlight" />
292 </td>
293 </tr>
294 </gsf:when>
295 </gsf:switch>
296
297
298
299 </table>
300
301 <div style="clear:both;"><xsl:text> </xsl:text></div>
302
303 <gsf:switch>
304 <gsf:metadata name='lyrics'/>
305 <gsf:when test='exists'>
306 <div style="padding-top: 10px; padding-bottom: 0px;">
307 <hr />
308 <div>
309 <b>Lyrics:</b>
310 </div>
311 <gsf:div id="lyrics-first-block"/>
312 <div id="lyrics-div-show-more">
313 <div id="lyrics-div" style="display: none;">
314 <span property="mo:lyrics" datatype="xsd:string" id="lyrics"><gsf:metadata name="lyrics" highlight="highlight" pos="first"/></span>
315 </div>
316 </div>
317
318 <gsf:script>
319 function pretty_print_lyrics(lyrics) {
320 pp_lyrics = lyrics.replace(/\\\\n/g,"⏎")
321 pp_lyrics = pp_lyrics.replace(/⏎⏎/g,"&lt;hr class=\"verse-divider\"/&gt;")
322 pp_lyrics = pp_lyrics.replace(/⏎/g," ⏎ ")
323
324 return pp_lyrics
325 }
326
327 $( document ).ready(function() {
328 var lyrics = $('#lyrics').html();
329 lyrics = lyrics.replace(/\\\\n\\n/g,"⏎⏎")
330
331 var first_block_pos = lyrics.indexOf("⏎⏎")
332 if (first_block_pos != -1) {
333 var lyrics_first_block = lyrics.substring(0,first_block_pos)
334 var lyrics_remaining = lyrics.substring(first_block_pos)
335 }
336 else {
337 var lyrics_first_block = ""
338 var lyrics_remaining = lyrics
339 }
340
341 lyrics_first_block = pretty_print_lyrics(lyrics_first_block)
342 lyrics_remaining = pretty_print_lyrics(lyrics_remaining)
343
344 $("#lyrics-first-block").html(lyrics_first_block)
345 $("#lyrics").html(lyrics_remaining)
346
347 $("#lyrics-div").show()
348
349 $('#lyrics-div-show-more').showMore({
350 minheight: 0,
351 buttontxtmore:"show more ...",
352 buttontxtless:"... show less"
353 });
354
355 })
356 </gsf:script>
357 <hr />
358
359 </div>
360 </gsf:when>
361 </gsf:switch>
362 </div>
363
364
365 </xsl:template>
366
367 <xsl:template name="documentContentFromCountry">
368 <div id="from-country-votes">
369 <gsf:script>
370 $(document).ready(function() {
371 append_all_from_country_votes();
372 });
373
374 window.addEventListener("resize", function() { append_all_from_country_votes() });
375 </gsf:script>
376 </div>
377 </xsl:template>
378
379 <xsl:template name="documentContentEntry">
380 <gsf:switch>
381 <gsf:metadata name='Abstract_en'/>
382 <gsf:when test='exists'>
383 <div style="padding-top: 10px;padding-bottom: 10px; font-style: italic;">
384 <gsf:metadata name='Abstract_en'/>
385 </div>
386 </gsf:when>
387 </gsf:switch>
388
389 <div id="to-country-votes">
390 <gsf:switch>
391 <gsf:metadata name='FinishingPos'/>
392 <gsf:when test='exists'>
393 <h2>
394 Overall Final Postion: <gsf:metadata name='FinishingPos'/>
395 </h2>
396 </gsf:when>
397 </gsf:switch>
398
399 <gsf:script>
400 $(document).ready(function() {
401 append_all_to_country_votes();
402 });
403
404 window.addEventListener("resize", function() { append_all_to_country_votes() });
405 </gsf:script>
406
407 </div>
408
409 <div style="padding-top: 6px;">
410 <hr />
411 </div>
412 <div id="find-more-content">
413 Find more content about this Eurovision entry on-line:
414
415 <ul>
416
417 <gsf:switch>
418 <gsf:metadata name='song_robust_uri' />
419 <gsf:when test='exists'>
420
421 <li>
422 <a target="_blank">
423 <xsl:attribute name="href">
424 <gsf:metadata name="song_robust_uri" />
425 </xsl:attribute>
426 @ DBpedia (direct URI to linked data)
427 <gsf:space/>
428 <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAVklEQVR4Xn3PgQkAMQhDUXfqTu7kTtkpd5RA8AInfArtQ2iRXFWT2QedAfttj2FsPIOE1eCOlEuoWWjgzYaB/IkeGOrxXhqB+uA9Bfcm0lAZuh+YIeAD+cAqSz4kCMUAAAAASUVORK5CYII=" alt="external link" />
429 </a>
430 </li>
431 </gsf:when>
432 </gsf:switch>
433
434
435 <gsf:switch>
436 <gsf:metadata name='youtube_url'/>
437 <gsf:when test='exists'>
438 <li>
439 <a target="_blank">
440 <xsl:attribute name="href"><gsf:metadata name="youtube_url"/></xsl:attribute>
441 @ <img src="sites/{$site_name}/collect/{$collName}/images/yt_logo_rgb_dark75.png"/>
442 <gsf:space/>
443 <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAVklEQVR4Xn3PgQkAMQhDUXfqTu7kTtkpd5RA8AInfArtQ2iRXFWT2QedAfttj2FsPIOE1eCOlEuoWWjgzYaB/IkeGOrxXhqB+uA9Bfcm0lAZuh+YIeAD+cAqSz4kCMUAAAAASUVORK5CYII=" alt="external link" />
444 </a>
445 </li>
446 <li>
447 <a target="_blank">
448 <xsl:attribute name="href">
449 //www.google.com/search?q=Eurovision+<gsf:metadata name="Title"/>+<gsf:metadata name="Country"/>
450 </xsl:attribute>
451 Google Web Search
452 <gsf:space/>
453 <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAVklEQVR4Xn3PgQkAMQhDUXfqTu7kTtkpd5RA8AInfArtQ2iRXFWT2QedAfttj2FsPIOE1eCOlEuoWWjgzYaB/IkeGOrxXhqB+uA9Bfcm0lAZuh+YIeAD+cAqSz4kCMUAAAAASUVORK5CYII=" alt="external link" />
454 </a>
455 </li>
456 </gsf:when>
457 <gsf:otherwise>
458 <li>
459 <a target="_blank">
460 <xsl:attribute name="href">
461 //www.google.com/search?q=Eurovision+<gsf:metadata name="Title"/>+<gsf:metadata name="Country"/>
462 </xsl:attribute>
463 Google Web Search (including <img src="sites/{$site_name}/collect/{$collName}/images/yt_logo_rgb_dark75.png"/>)
464 <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAVklEQVR4Xn3PgQkAMQhDUXfqTu7kTtkpd5RA8AInfArtQ2iRXFWT2QedAfttj2FsPIOE1eCOlEuoWWjgzYaB/IkeGOrxXhqB+uA9Bfcm0lAZuh+YIeAD+cAqSz4kCMUAAAAASUVORK5CYII=" alt="external link" />
465 </a>
466 <gsf:space/>
467 <!--
468 <a target="_blank">
469 <xsl:attribute name="href">
470 //www.google.com/search?q=Eurovision+<gsf:metadata name="Title"/>+<gsf:metadata name="Country"/>
471 </xsl:attribute>
472 and Google Web Search
473 </a>
474 -->
475 </li>
476 </gsf:otherwise>
477 </gsf:switch>
478
479
480 <!--
481 <li>
482 <a target="_blank">
483 <xsl:attribute name="href">
484 //www.google.com/search?q=<gsf:metadata name="Creator"/>+<gsf:metadata name="Title"/>+site:genius.com
485 </xsl:attribute>
486 @ Genius.com (lyrics search)
487 <gsf:space/>
488 <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAVklEQVR4Xn3PgQkAMQhDUXfqTu7kTtkpd5RA8AInfArtQ2iRXFWT2QedAfttj2FsPIOE1eCOlEuoWWjgzYaB/IkeGOrxXhqB+uA9Bfcm0lAZuh+YIeAD+cAqSz4kCMUAAAAASUVORK5CYII=" alt="external link" />
489 </a>
490 </li>
491 -->
492
493 <li>
494 <a target="_blank">
495 <xsl:attribute name="href">
496 //www.google.com/search?q=<gsf:metadata name="Creator"/>+<gsf:metadata name="Title"/>+site:ultimate-guitar.com
497 </xsl:attribute>
498 Chord/Tab search @ Ultimate-Guitar
499 <gsf:space/>
500 <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAVklEQVR4Xn3PgQkAMQhDUXfqTu7kTtkpd5RA8AInfArtQ2iRXFWT2QedAfttj2FsPIOE1eCOlEuoWWjgzYaB/IkeGOrxXhqB+uA9Bfcm0lAZuh+YIeAD+cAqSz4kCMUAAAAASUVORK5CYII=" alt="external link" />
501 </a>
502 </li>
503
504 <li>
505
506 <gsf:switch>
507 <gsf:metadata name="musicbrainz.title_id" />
508 <gsf:when test="exists">
509 <xsl:variable name="musicbrainz_title_id"><gsf:metadata name="musicbrainz.title_id" /></xsl:variable>
510 <a target="_blank" href="https://musicbrainz.org/recording/{$musicbrainz_title_id}">
511 MusicBrainz Recording ID <gsf:metadata name="musicbrainz.title_id" />
512 <gsf:space/>
513 <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAVklEQVR4Xn3PgQkAMQhDUXfqTu7kTtkpd5RA8AInfArtQ2iRXFWT2QedAfttj2FsPIOE1eCOlEuoWWjgzYaB/IkeGOrxXhqB+uA9Bfcm0lAZuh+YIeAD+cAqSz4kCMUAAAAASUVORK5CYII=" alt="external link" />
514 </a>
515 </gsf:when>
516 <gsf:otherwise>
517 <a target="_blank">
518 <xsl:attribute name="href">
519 //www.google.com/search?q=&quot;<gsf:metadata name="Title"/>&quot; site:musicbrainz.org
520 </xsl:attribute>
521 Linked Open Data song title search @ MusicBrainz
522 <gsf:space/>
523 <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAVklEQVR4Xn3PgQkAMQhDUXfqTu7kTtkpd5RA8AInfArtQ2iRXFWT2QedAfttj2FsPIOE1eCOlEuoWWjgzYaB/IkeGOrxXhqB+uA9Bfcm0lAZuh+YIeAD+cAqSz4kCMUAAAAASUVORK5CYII=" alt="external link" />
524 </a>
525 </gsf:otherwise>
526 </gsf:switch>
527 </li>
528
529 <gsf:switch>
530 <gsf:metadata name="json.-AssocEssentia" />
531 <gsf:when test="exists">
532 <li>
533 <xsl:variable name="httpCollection"><xsl:value-of select="$library_name"/>/sites/<xsl:value-of select="$site_name"/>/collect/<xsl:value-of select="/page/pageResponse/collection/@name"/></xsl:variable>
534 <xsl:variable name="assocFilePath"><gsf:metadata name="assocfilepath" select="root"/></xsl:variable>
535 <gsf:variable name="AssocEssentiaJSON"><gsf:OID/>-AssocEssentia.json</gsf:variable>
536 <a download="{$AssocEssentiaJSON}" href="{$httpCollection}/index/assoc/{$assocFilePath}/{$AssocEssentiaJSON}">Download Audio Features</a>
537 </li>
538 </gsf:when>
539 </gsf:switch>
540
541 </ul>
542 </div>
543 <!--
544 google.com/webhp?##q=yourquery&btnI=I
545 -->
546
547 </xsl:template>
548
549 <xsl:template name="documentContent">
550
551 <gsf:switch>
552 <gsf:metadata name='FromCountry'/>
553 <gsf:when test='exists'>
554 <xsl:call-template name="documentContentFromCountry"/>
555 </gsf:when>
556 <gsf:otherwise>
557 <xsl:call-template name="documentContentEntry"/>
558 </gsf:otherwise>
559 </gsf:switch>
560
561 </xsl:template>
562
563</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.