diff --git a/akka-bbb-apps/src/main/scala/org/bigbluebutton/endpoint/redis/LearningDashboardActor.scala b/akka-bbb-apps/src/main/scala/org/bigbluebutton/endpoint/redis/LearningDashboardActor.scala index 63ded0f632..4fddd78310 100644 --- a/akka-bbb-apps/src/main/scala/org/bigbluebutton/endpoint/redis/LearningDashboardActor.scala +++ b/akka-bbb-apps/src/main/scala/org/bigbluebutton/endpoint/redis/LearningDashboardActor.scala @@ -20,6 +20,7 @@ case class Meeting( intId: String, extId: String, name: String, + downloadSessionDataEnabled: Boolean, users: Map[String, User] = Map(), polls: Map[String, Poll] = Map(), screenshares: Vector[Screenshare] = Vector(), @@ -585,6 +586,7 @@ class LearningDashboardActor( msg.body.props.meetingProp.intId, msg.body.props.meetingProp.extId, msg.body.props.meetingProp.name, + downloadSessionDataEnabled = !msg.body.props.meetingProp.disabledFeatures.contains("learningDashboardDownloadSessionData"), ) meetings += (newMeeting.intId -> newMeeting) diff --git a/bbb-learning-dashboard/src/App.js b/bbb-learning-dashboard/src/App.js index 2709f906c9..6c055860a4 100644 --- a/bbb-learning-dashboard/src/App.js +++ b/bbb-learning-dashboard/src/App.js @@ -54,8 +54,11 @@ class App extends React.Component { const { intl } = this.props; const { activitiesJson } = this.state; const { - name: meetingName, createdOn, users, polls, + name: meetingName, createdOn, users, polls, downloadSessionDataEnabled, } = activitiesJson; + + if (downloadSessionDataEnabled === false) return; + const link = document.createElement('a'); const data = makeUserCSVData(users, polls, intl); const filename = `LearningDashboard_${meetingName}_${new Date(createdOn).toISOString().substr(0, 10)}.csv`.replace(/ /g, '-'); @@ -581,17 +584,23 @@ class App extends React.Component { }
- + { + (activitiesJson.downloadSessionDataEnabled || false) + ? ( + + ) + : null + } ); diff --git a/bigbluebutton-web/grails-app/conf/bigbluebutton.properties b/bigbluebutton-web/grails-app/conf/bigbluebutton.properties index 370396db30..4a117043fd 100644 --- a/bigbluebutton-web/grails-app/conf/bigbluebutton.properties +++ b/bigbluebutton-web/grails-app/conf/bigbluebutton.properties @@ -430,10 +430,11 @@ endWhenNoModeratorDelayInMinutes=1 # List of features to disable (comma-separated) # Available options: -# chat, sharedNotes, polls, screenshare, externalVideos, presentation, downloadPresentationWithAnnotations -# learningDashboard, layouts, captions, liveTranscription, virtualBackgrounds, customVirtualBackgrounds -# breakoutRooms, importSharedNotesFromBreakoutRooms, importPresentationWithAnnotationsFromBreakoutRooms, -# downloadPresentationOriginalFile, downloadPresentationConvertedToPdf +# breakoutRooms, captions, chat, customVirtualBackgrounds, downloadPresentationConvertedToPdf +# downloadPresentationOriginalFile, downloadPresentationWithAnnotations, externalVideos +# importPresentationWithAnnotationsFromBreakoutRooms, importSharedNotesFromBreakoutRooms, layouts +# learningDashboard, learningDashboardDownloadSessionData, liveTranscription, polls, presentation +# screenshare, sharedNotes, virtualBackgrounds disabledFeatures= # Notify users that recording is on diff --git a/docs/docs/data/create.tsx b/docs/docs/data/create.tsx index 11bfd16337..17eac2e6e5 100644 --- a/docs/docs/data/create.tsx +++ b/docs/docs/data/create.tsx @@ -344,7 +344,7 @@ const createEndpointTableData = [ "name": "disabledFeatures", "required": false, "type": "String", - "description": (<>List (comma-separated) of features to disable in a particular meeting. (added 2.5)breakoutRooms
- Breakout Rooms captions
- Closed Caption chat
- ChatdownloadPresentationWithAnnotations
- Annotated presentation downloadsnapshotOfCurrentSlide
- Allow snapshot of the current slideexternalVideos
- Share an external video importPresentationWithAnnotationsFromBreakoutRooms
- Capture breakout presentationimportSharedNotesFromBreakoutRooms
- Capture breakout shared noteslayouts
- Layouts (allow only default layout)learningDashboard
- Learning Analytics Dashboardpolls
- Polls screenshare
- Screen SharingsharedNotes
- Shared NotesvirtualBackgrounds
- Virtual BackgroundscustomVirtualBackgrounds
- Virtual Backgrounds UploadliveTranscription
- Live Transcriptionpresentation
- PresentationcameraAsContent
-Enables/Disables camera as a contenttimer
- disables timerbreakoutRooms
- Breakout Rooms captions
- Closed Caption chat
- ChatdownloadPresentationWithAnnotations
- Annotated presentation downloadsnapshotOfCurrentSlide
- Allow snapshot of the current slideexternalVideos
- Share an external video importPresentationWithAnnotationsFromBreakoutRooms
- Capture breakout presentationimportSharedNotesFromBreakoutRooms
- Capture breakout shared noteslayouts
- Layouts (allow only default layout)learningDashboard
- Learning Analytics DashboardlearningDashboardDownloadSessionData
- Learning Analytics Dashboard Download Session Data (prevents the option to download)polls
- Polls screenshare
- Screen SharingsharedNotes
- Shared NotesvirtualBackgrounds
- Virtual BackgroundscustomVirtualBackgrounds
- Virtual Backgrounds UploadliveTranscription
- Live Transcriptionpresentation
- PresentationcameraAsContent
-Enables/Disables camera as a contenttimer
- disables timer