From 78ece5f05cab71f415d8ece4e3014a28d9a734d6 Mon Sep 17 00:00:00 2001 From: Anton Georgiev Date: Tue, 20 Feb 2024 09:21:57 -0500 Subject: [PATCH] feat(config): Add option to disabled "Download session data" on Learning Dashboard (backport) (#19641) * Add option disabledFeatures=learningDashboardDownloadSessionData * docs: document learningDashboardDownloadSessionData --------- Co-authored-by: Gustavo Trott --- .../redis/LearningDashboardActor.scala | 2 ++ bbb-learning-dashboard/src/App.js | 33 ++++++++++++------- .../grails-app/conf/bigbluebutton.properties | 9 ++--- docs/docs/data/create.tsx | 2 +- docs/docs/development/api.md | 2 +- 5 files changed, 30 insertions(+), 18 deletions(-) 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)

Available options to disable:
) + "description": (<>List (comma-separated) of features to disable in a particular meeting. (added 2.5)

Available options to disable:
) }, { "name": "disabledFeaturesExclude", diff --git a/docs/docs/development/api.md b/docs/docs/development/api.md index 9caa409ada..d7e9e22460 100644 --- a/docs/docs/development/api.md +++ b/docs/docs/development/api.md @@ -104,7 +104,7 @@ Updated in 2.6: Updated in 2.7: -- **create** - **Added:** `preUploadedPresentation`, `preUploadedPresentationName`, `disabledFeatures` options`cameraAsContent`, `snapshotOfCurrentSlide`, `downloadPresentationOriginalFile`, `downloadPresentationConvertedToPdf`, `timer`. +- **create** - **Added:** `preUploadedPresentation`, `preUploadedPresentationName`, `disabledFeatures` options`cameraAsContent`, `snapshotOfCurrentSlide`, `downloadPresentationOriginalFile`, `downloadPresentationConvertedToPdf`, `timer`, `learningDashboardDownloadSessionData` (2.7.5). - **join** - **Added:** `redirectErrorUrl`, `userdata-bbb_fullaudio_bridge`