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 <gustavo@trott.com.br>
This commit is contained in:
Anton Georgiev 2024-02-20 09:21:57 -05:00 committed by GitHub
parent 96a583b3e5
commit 78ece5f05c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 30 additions and 18 deletions

View File

@ -20,6 +20,7 @@ case class Meeting(
intId: String, intId: String,
extId: String, extId: String,
name: String, name: String,
downloadSessionDataEnabled: Boolean,
users: Map[String, User] = Map(), users: Map[String, User] = Map(),
polls: Map[String, Poll] = Map(), polls: Map[String, Poll] = Map(),
screenshares: Vector[Screenshare] = Vector(), screenshares: Vector[Screenshare] = Vector(),
@ -585,6 +586,7 @@ class LearningDashboardActor(
msg.body.props.meetingProp.intId, msg.body.props.meetingProp.intId,
msg.body.props.meetingProp.extId, msg.body.props.meetingProp.extId,
msg.body.props.meetingProp.name, msg.body.props.meetingProp.name,
downloadSessionDataEnabled = !msg.body.props.meetingProp.disabledFeatures.contains("learningDashboardDownloadSessionData"),
) )
meetings += (newMeeting.intId -> newMeeting) meetings += (newMeeting.intId -> newMeeting)

View File

@ -54,8 +54,11 @@ class App extends React.Component {
const { intl } = this.props; const { intl } = this.props;
const { activitiesJson } = this.state; const { activitiesJson } = this.state;
const { const {
name: meetingName, createdOn, users, polls, name: meetingName, createdOn, users, polls, downloadSessionDataEnabled,
} = activitiesJson; } = activitiesJson;
if (downloadSessionDataEnabled === false) return;
const link = document.createElement('a'); const link = document.createElement('a');
const data = makeUserCSVData(users, polls, intl); const data = makeUserCSVData(users, polls, intl);
const filename = `LearningDashboard_${meetingName}_${new Date(createdOn).toISOString().substr(0, 10)}.csv`.replace(/ /g, '-'); const filename = `LearningDashboard_${meetingName}_${new Date(createdOn).toISOString().substr(0, 10)}.csv`.replace(/ /g, '-');
@ -581,17 +584,23 @@ class App extends React.Component {
} }
</p> </p>
</div> </div>
<button {
data-test="downloadSessionDataDashboard" (activitiesJson.downloadSessionDataEnabled || false)
type="button" ? (
className="border-2 text-gray-700 border-gray-200 rounded-md px-4 py-2 bg-white focus:outline-none focus:ring ring-offset-2 focus:ring-gray-500 focus:ring-opacity-50" <button
onClick={this.handleSaveSessionData.bind(this)} data-test="downloadSessionDataDashboard"
> type="button"
<FormattedMessage className="border-2 text-gray-700 border-gray-200 rounded-md px-4 py-2 bg-white focus:outline-none focus:ring ring-offset-2 focus:ring-gray-500 focus:ring-opacity-50"
id="app.learningDashboard.downloadSessionDataLabel" onClick={this.handleSaveSessionData.bind(this)}
defaultMessage="Download Session Data" >
/> <FormattedMessage
</button> id="app.learningDashboard.downloadSessionDataLabel"
defaultMessage="Download Session Data"
/>
</button>
)
: null
}
</div> </div>
</div> </div>
); );

View File

@ -430,10 +430,11 @@ endWhenNoModeratorDelayInMinutes=1
# List of features to disable (comma-separated) # List of features to disable (comma-separated)
# Available options: # Available options:
# chat, sharedNotes, polls, screenshare, externalVideos, presentation, downloadPresentationWithAnnotations # breakoutRooms, captions, chat, customVirtualBackgrounds, downloadPresentationConvertedToPdf
# learningDashboard, layouts, captions, liveTranscription, virtualBackgrounds, customVirtualBackgrounds # downloadPresentationOriginalFile, downloadPresentationWithAnnotations, externalVideos
# breakoutRooms, importSharedNotesFromBreakoutRooms, importPresentationWithAnnotationsFromBreakoutRooms, # importPresentationWithAnnotationsFromBreakoutRooms, importSharedNotesFromBreakoutRooms, layouts
# downloadPresentationOriginalFile, downloadPresentationConvertedToPdf # learningDashboard, learningDashboardDownloadSessionData, liveTranscription, polls, presentation
# screenshare, sharedNotes, virtualBackgrounds
disabledFeatures= disabledFeatures=
# Notify users that recording is on # Notify users that recording is on

View File

@ -344,7 +344,7 @@ const createEndpointTableData = [
"name": "disabledFeatures", "name": "disabledFeatures",
"required": false, "required": false,
"type": "String", "type": "String",
"description": (<>List (comma-separated) of features to disable in a particular meeting. (added 2.5)<br /><br />Available options to disable:<br /><ul><li><code className="language-plaintext highlighter-rouge">breakoutRooms</code>- <b>Breakout Rooms</b> </li><li><code className="language-plaintext highlighter-rouge">captions</code>- <b>Closed Caption</b> </li><li><code className="language-plaintext highlighter-rouge">chat</code>- <b>Chat</b></li><li><code className="language-plaintext highlighter-rouge">downloadPresentationWithAnnotations</code>- <b>Annotated presentation download</b></li><li><code className="language-plaintext highlighter-rouge">snapshotOfCurrentSlide</code>- <b>Allow snapshot of the current slide</b></li><li><code className="language-plaintext highlighter-rouge">externalVideos</code>- <b>Share an external video</b> </li><li><code className="language-plaintext highlighter-rouge">importPresentationWithAnnotationsFromBreakoutRooms</code>- <b>Capture breakout presentation</b></li><li><code className="language-plaintext highlighter-rouge">importSharedNotesFromBreakoutRooms</code>- <b>Capture breakout shared notes</b></li><li><code className="language-plaintext highlighter-rouge">layouts</code>- <b>Layouts</b> (allow only default layout)</li><li><code className="language-plaintext highlighter-rouge">learningDashboard</code>- <b>Learning Analytics Dashboard</b></li><li><code className="language-plaintext highlighter-rouge">polls</code>- <b>Polls</b> </li><li><code className="language-plaintext highlighter-rouge">screenshare</code>- <b>Screen Sharing</b></li><li><code className="language-plaintext highlighter-rouge">sharedNotes</code>- <b>Shared Notes</b></li><li><code className="language-plaintext highlighter-rouge">virtualBackgrounds</code>- <b>Virtual Backgrounds</b></li><li><code className="language-plaintext highlighter-rouge">customVirtualBackgrounds</code>- <b>Virtual Backgrounds Upload</b></li><li><code className="language-plaintext highlighter-rouge">liveTranscription</code>- <b>Live Transcription</b></li><li><code className="language-plaintext highlighter-rouge">presentation</code>- <b>Presentation</b></li><li><code className="language-plaintext highlighter-rouge">cameraAsContent</code>-<b>Enables/Disables camera as a content</b></li><li><code className="language-plaintext highlighter-rouge">timer</code>- <b>disables timer</b></li></ul></>) "description": (<>List (comma-separated) of features to disable in a particular meeting. (added 2.5)<br /><br />Available options to disable:<br /><ul><li><code className="language-plaintext highlighter-rouge">breakoutRooms</code>- <b>Breakout Rooms</b> </li><li><code className="language-plaintext highlighter-rouge">captions</code>- <b>Closed Caption</b> </li><li><code className="language-plaintext highlighter-rouge">chat</code>- <b>Chat</b></li><li><code className="language-plaintext highlighter-rouge">downloadPresentationWithAnnotations</code>- <b>Annotated presentation download</b></li><li><code className="language-plaintext highlighter-rouge">snapshotOfCurrentSlide</code>- <b>Allow snapshot of the current slide</b></li><li><code className="language-plaintext highlighter-rouge">externalVideos</code>- <b>Share an external video</b> </li><li><code className="language-plaintext highlighter-rouge">importPresentationWithAnnotationsFromBreakoutRooms</code>- <b>Capture breakout presentation</b></li><li><code className="language-plaintext highlighter-rouge">importSharedNotesFromBreakoutRooms</code>- <b>Capture breakout shared notes</b></li><li><code className="language-plaintext highlighter-rouge">layouts</code>- <b>Layouts</b> (allow only default layout)</li><li><code className="language-plaintext highlighter-rouge">learningDashboard</code>- <b>Learning Analytics Dashboard</b></li><li><code className="language-plaintext highlighter-rouge">learningDashboardDownloadSessionData</code>- <b>Learning Analytics Dashboard Download Session Data (prevents the option to download)</b></li><li><code className="language-plaintext highlighter-rouge">polls</code>- <b>Polls</b> </li><li><code className="language-plaintext highlighter-rouge">screenshare</code>- <b>Screen Sharing</b></li><li><code className="language-plaintext highlighter-rouge">sharedNotes</code>- <b>Shared Notes</b></li><li><code className="language-plaintext highlighter-rouge">virtualBackgrounds</code>- <b>Virtual Backgrounds</b></li><li><code className="language-plaintext highlighter-rouge">customVirtualBackgrounds</code>- <b>Virtual Backgrounds Upload</b></li><li><code className="language-plaintext highlighter-rouge">liveTranscription</code>- <b>Live Transcription</b></li><li><code className="language-plaintext highlighter-rouge">presentation</code>- <b>Presentation</b></li><li><code className="language-plaintext highlighter-rouge">cameraAsContent</code>-<b>Enables/Disables camera as a content</b></li><li><code className="language-plaintext highlighter-rouge">timer</code>- <b>disables timer</b></li></ul></>)
}, },
{ {
"name": "disabledFeaturesExclude", "name": "disabledFeaturesExclude",

View File

@ -104,7 +104,7 @@ Updated in 2.6:
Updated in 2.7: 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` - **join** - **Added:** `redirectErrorUrl`, `userdata-bbb_fullaudio_bridge`