Skip to content

Commit cae5161

Browse files
committed
Add support for 'metadata' as a caption type
1 parent 21c0315 commit cae5161

File tree

1 file changed

+53
-36
lines changed

1 file changed

+53
-36
lines changed

system/application/views/melons/cantaloupe/js/scalarmedia.jquery.js

Lines changed: 53 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -256,8 +256,27 @@
256256
col.append('<p>'+rowRelation.body.getDisplayTitle()+'</p>');
257257
});
258258
}
259-
}
259+
},
260260

261+
addMetadataTableForNodeToElement: function(node, element) {
262+
var table = $( '<table></table>' ).appendTo(element);
263+
// basic Scalar properties
264+
table.append('<tr><td>Scalar URL</td><td><a href="'+node.url+'">'+node.url+'</a> (version '+node.current.number+')</td></tr>');
265+
table.append('<tr><td>Source URL</td><td><a href="'+node.current.sourceFile+'">'+node.current.sourceFile+'</a> ('+node.current.mediaSource.contentType+'/'+node.current.mediaSource.name+')</td></tr>');
266+
table.append('<tr><td>dcterms:title</td><td>'+node.getDisplayTitle()+'</td></tr>');
267+
if (null!=node.current.description) table.append('<tr><td>dcterms:description</td><td>'+node.current.description+'</td></tr>');
268+
if (null!=node.current.source) table.append('<tr><td>dcterms:source</td><td>'+node.current.source+'</td></tr>');
269+
if (null!=node.current.sourceLocation) table.append('<tr><td>art:sourceLocation</td><td><a href="'+node.current.sourceLocation+'">'+node.current.sourceLocation+'</a></td></tr>');
270+
// auxiliary properties
271+
for ( prop in node.current.auxProperties ) {
272+
for ( i in node.current.auxProperties[ prop ] ) {
273+
value = node.current.auxProperties[ prop ][ i ];
274+
table.append( '<tr><td>' + prop + '</td><td>' + value + '</td></tr>');
275+
}
276+
}
277+
// API links
278+
table.append('<tr><td>View as</td><td><a href="'+node.url+'.rdfxml">RDF-XML</a>, <a href="'+node.url+'.rdfjson">RDF-JSON</a>, or <a href="'+node.url+'.meta">HTML</a></td></tr>');
279+
}
261280
}
262281

263282
var node = mediaelement.model.node;
@@ -288,6 +307,12 @@
288307
}
289308
break;
290309

310+
case 'metadata':
311+
description = $('<div></div>');
312+
media.addMetadataTableForNodeToElement(node, description);
313+
description.unwrap();
314+
break;
315+
291316
default:
292317
description = node.current.description;
293318
if ( node.current.description == null ) {
@@ -297,10 +322,15 @@
297322

298323
}
299324
if ( media.options.caption != 'none' ) {
300-
if ( node.current.source != null ) {
301-
description += '<br><i>Source: ' + node.current.source + '</i>';
325+
var descriptionPane = $('<div class="media_description pane"></div>').appendTo(element);
326+
if (node.current.source != null) {
327+
if (media.options.caption != 'metadata') {
328+
description += '<br><i>Source: ' + node.current.source + '</i>';
329+
} else {
330+
descriptionPane.addClass('media_metadata');
331+
}
302332
}
303-
var descriptionPane = $('<div class="media_description pane">'+description+'</div>').appendTo(element);
333+
descriptionPane.append(description);
304334
var descriptionTab = $('<div class="media_tab select">Description</div>').appendTo(mediaTabs);
305335
descriptionTab.click(function() {
306336
$(this).parent().parent().find('.pane').hide();
@@ -379,40 +409,27 @@
379409
}
380410
}
381411

382-
var metadataTab = $('<div class="media_tab">Details</div>').appendTo(mediaTabs);
383-
var metadataPane = $('<div class="media_metadata pane"></div>').appendTo(element);
384-
metadataTab.click(function() {
385-
$(this).parent().parent().find('.pane').hide();
386-
media.minimizeAnnotationPane();
387-
metadataPane.show();
388-
$(this).parent().find('.media_tab').removeClass('select');
389-
metadataTab.addClass('select');
390-
if (currentRelation != null) {
391-
media.showAnnotation(null, currentRelation, mediaelement, true);
392-
}
393-
});
394-
var table = $( '<table></table>' ).appendTo( metadataPane );
395-
// basic Scalar properties
396-
table.append('<tr><td>Scalar URL</td><td><a href="'+node.url+'">'+node.url+'</a> (version '+node.current.number+')</td></tr>');
397-
table.append('<tr><td>Source URL</td><td><a href="'+node.current.sourceFile+'">'+node.current.sourceFile+'</a> ('+node.current.mediaSource.contentType+'/'+node.current.mediaSource.name+')</td></tr>');
398-
table.append('<tr><td>dcterms:title</td><td>'+node.getDisplayTitle()+'</td></tr>');
399-
if (null!=node.current.description) table.append('<tr><td>dcterms:description</td><td>'+node.current.description+'</td></tr>');
400-
if (null!=node.current.source) table.append('<tr><td>dcterms:source</td><td>'+node.current.source+'</td></tr>');
401-
if (null!=node.current.sourceLocation) table.append('<tr><td>art:sourceLocation</td><td><a href="'+node.current.sourceLocation+'">'+node.current.sourceLocation+'</a></td></tr>');
402-
// auxiliary properties
403-
for ( prop in node.current.auxProperties ) {
404-
for ( i in node.current.auxProperties[ prop ] ) {
405-
value = node.current.auxProperties[ prop ][ i ];
406-
table.append( '<tr><td>' + prop + '</td><td>' + value + '</td></tr>');
412+
// hide metadata tab if the media's description tab includes the metadata
413+
if (media.options.caption != 'metadata') {
414+
var metadataTab = $('<div class="media_tab">Details</div>').appendTo(mediaTabs);
415+
var metadataPane = $('<div class="media_metadata pane"></div>').appendTo(element);
416+
metadataTab.click(function() {
417+
$(this).parent().parent().find('.pane').hide();
418+
media.minimizeAnnotationPane();
419+
metadataPane.show();
420+
$(this).parent().find('.media_tab').removeClass('select');
421+
metadataTab.addClass('select');
422+
if (currentRelation != null) {
423+
media.showAnnotation(null, currentRelation, mediaelement, true);
424+
}
425+
});
426+
media.addMetadataTableForNodeToElement(node, metadataPane);
427+
if (!foundAuxContent) {
428+
element.find('.media_metadata').show();
429+
metadataTab.addClass('select');
430+
foundAuxContent = true;
407431
}
408432
}
409-
// API links
410-
table.append('<tr><td>View as</td><td><a href="'+node.url+'.rdfxml">RDF-XML</a>, <a href="'+node.url+'.rdfjson">RDF-JSON</a>, or <a href="'+node.url+'.meta">HTML</a></td></tr>');
411-
if (!foundAuxContent) {
412-
element.find('.media_metadata').show();
413-
metadataTab.addClass('select');
414-
foundAuxContent = true;
415-
}
416433

417434
var detailsTab = $( '<div class="media_tab">Citations</div>' ).appendTo( mediaTabs );
418435
detailsTab.click( function() {

0 commit comments

Comments
 (0)