diff --git a/bbb-lti/grails-app/assets/javascripts/tool.js b/bbb-lti/grails-app/assets/javascripts/tool.js index 52695451cdedd1defd109bec500b9fb0976359c8..b5ad9cc65819349d8d1073531ca109578234d2b5 100644 --- a/bbb-lti/grails-app/assets/javascripts/tool.js +++ b/bbb-lti/grails-app/assets/javascripts/tool.js @@ -22,17 +22,17 @@ $(document).ready(function() { $('#recordings').dataTable({ columnDefs: [ { targets: 4, - render: $.fn.dataTable.render.moment('X', 'LLL', locale) + render: $.fn.dataTable.render.moment('X', 'lll', locale) } ], sPaginationType : "full_numbers", "columns": [ null, null, null, + { "width": "90px" }, null, - null, - null, - { "width": "160px" } + { "width": "40px" }, + { "width": "120px" } ], "order": [[ 4, "desc" ]] }); diff --git a/bbb-lti/grails-app/assets/stylesheets/tool.css b/bbb-lti/grails-app/assets/stylesheets/tool.css new file mode 100644 index 0000000000000000000000000000000000000000..a0e939bb962772676662774d3bedd24b67ffabe4 --- /dev/null +++ b/bbb-lti/grails-app/assets/stylesheets/tool.css @@ -0,0 +1,14 @@ +.thumbnail { + height: 51px; + padding: 4px; + width: 66px; + float: left; +} + +.thumbnail:hover { + display: inline-block; + height: auto; + position: absolute; + width: auto; + z-index: 99999; +} diff --git a/bbb-lti/grails-app/controllers/org/bigbluebutton/ToolController.groovy b/bbb-lti/grails-app/controllers/org/bigbluebutton/ToolController.groovy index b868a2b564c5cab3425ed9f20a5345b9b8095bd2..87a85f90519459ce007461fb734e0325f99b19fb 100644 --- a/bbb-lti/grails-app/controllers/org/bigbluebutton/ToolController.groovy +++ b/bbb-lti/grails-app/controllers/org/bigbluebutton/ToolController.groovy @@ -309,9 +309,7 @@ class ToolController { recordings = response } // Sanitize recordings - Iterator i = recordings.iterator(); - while (i.hasNext()) { - def recording = i.next() + for (recording in recordings) { // Calculate duration. long endTime = Long.parseLong((String)recording.get("endTime")) endTime -= (endTime % 1000) @@ -326,10 +324,22 @@ class ToolController { // Add reportDate. recording.put("reportDate", reportDate) recording.put("unixDate", startTime / 1000) + // Add sanitized thumbnails + recording.put("thumbnails", sanitizeThumbnails(recording.playback.format)) } return recordings } + private List<Object> sanitizeThumbnails(Object format) { + if (format.preview == null || format.preview.images == null || format.preview.images.image == null) { + return new ArrayList() + } + if (format.preview.images.image instanceof Map<?,?>) { + return new ArrayList(format.preview.images.image) + } + return format.preview.images.image + } + private String getCartridgeXML(){ def lti_endpoint = ltiService.retrieveBasicLtiEndpoint() + '/' + grailsApplication.metadata['app.name'] def launch_url = 'http://' + lti_endpoint + '/tool' diff --git a/bbb-lti/grails-app/i18n/messages.properties b/bbb-lti/grails-app/i18n/messages.properties index 0385dd5f83b75874d4fdde0d3eb08f7b26093b74..4b708fbecba231e618ff510beff21645a3ccdddd 100644 --- a/bbb-lti/grails-app/i18n/messages.properties +++ b/bbb-lti/grails-app/i18n/messages.properties @@ -42,6 +42,6 @@ tool.view.preview=Preview tool.view.date=Date tool.view.duration=Duration tool.view.actions=Actions -tool.view.dateFormat=E, MMM dd, yyyy HH:mm:ss Z +tool.view.dateFormat=E, MM dd, yyyy HH:mm:ss Z tool.error.general=Connection could not be established. diff --git a/bbb-lti/grails-app/i18n/messages_es.properties b/bbb-lti/grails-app/i18n/messages_es.properties index b749c09d525a5fb43763ccb414654d6d5723af04..2513f516b2906e9dec726a59a4225b176dd32311 100644 --- a/bbb-lti/grails-app/i18n/messages_es.properties +++ b/bbb-lti/grails-app/i18n/messages_es.properties @@ -43,6 +43,6 @@ tool.view.preview=Vista preliminar tool.view.date=Fecha tool.view.duration=Duración tool.view.actions=Acciones -tool.view.dateFormat=E, MMM dd, yyyy HH:mm:ss Z +tool.view.dateFormat=E, MM dd, yyyy HH:mm:ss Z tool.error.general=No pudo estableserce la conexión. diff --git a/bbb-lti/grails-app/i18n/messages_fr.properties b/bbb-lti/grails-app/i18n/messages_fr.properties index 6d56c9e0d0cf9d7f7d37af1474c0815632f13ee0..a25b69bf01283a26867cecec4706e18ef265e11a 100644 --- a/bbb-lti/grails-app/i18n/messages_fr.properties +++ b/bbb-lti/grails-app/i18n/messages_fr.properties @@ -38,6 +38,6 @@ tool.view.preview=Apreçu tool.view.date=Date tool.view.duration=Durée tool.view.actions=Actions -tool.view.dateFormat=E, MMM dd, yyyy HH:mm:ss Z +tool.view.dateFormat=E, MM dd, yyyy HH:mm:ss Z tool.error.general=Pas possible établir la connection. diff --git a/bbb-lti/grails-app/views/tool/index.gsp b/bbb-lti/grails-app/views/tool/index.gsp index beabc86363ae1beef37d4e3f844f78777853f9d0..ca27d71ca15671b92dff02298e30e04ed852dfe9 100644 --- a/bbb-lti/grails-app/views/tool/index.gsp +++ b/bbb-lti/grails-app/views/tool/index.gsp @@ -4,6 +4,7 @@ <link rel="shortcut icon" href="${assetPath(src: 'favicon.ico')}" type="image/x-icon"> <asset:stylesheet src="bootstrap.css"/> <asset:stylesheet src="dataTables.bootstrap.min.css"/> + <asset:stylesheet src="tool.css"/> <asset:javascript src="jquery.js"/> <asset:javascript src="jquery.dataTables.min.js"/> <asset:javascript src="dataTables.bootstrap.min.js"/> @@ -44,7 +45,15 @@ </td> <td class="cell c1" style="text-align:left;">${r.name}</td> <td class="cell c2" style="text-align:left;">${r.metadata.contextactivitydescription}</td> - <td class="cell c3" style="text-align:left;">${r.metadata.contextactivitydescription}</td> + <td class="cell c3" style="text-align:left;"> + <g:if test="${r.published}"> + <div> + <g:each in="${r.thumbnails}" var="thumbnail"> + <img src="${thumbnail.content}" class="thumbnail"></img> + </g:each> + </div> + </g:if> + </td> <td class="cell c4" style="text-align:left;">${r.unixDate}</td> <td class="cell c5" style="text-align:right;">${r.duration}</td> <g:if test="${ismoderator}">