Skip to content

Commit

Permalink
feat(config): Add option to disabled "Download session data" on Learn…
Browse files Browse the repository at this point in the history
…ing Dashboard (backport) (#19641)

* Add option disabledFeatures=learningDashboardDownloadSessionData

* docs: document learningDashboardDownloadSessionData

---------

Co-authored-by: Gustavo Trott <gustavo@trott.com.br>
  • Loading branch information
antobinary and gustavotrott committed Feb 20, 2024
1 parent 96a583b commit 78ece5f
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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(),
Expand Down Expand Up @@ -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)
Expand Down
33 changes: 21 additions & 12 deletions bbb-learning-dashboard/src/App.js
Original file line number Diff line number Diff line change
Expand Up @@ -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, '-');
Expand Down Expand Up @@ -581,17 +584,23 @@ class App extends React.Component {
}
</p>
</div>
<button
data-test="downloadSessionDataDashboard"
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"
onClick={this.handleSaveSessionData.bind(this)}
>
<FormattedMessage
id="app.learningDashboard.downloadSessionDataLabel"
defaultMessage="Download Session Data"
/>
</button>
{
(activitiesJson.downloadSessionDataEnabled || false)
? (
<button
data-test="downloadSessionDataDashboard"
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"
onClick={this.handleSaveSessionData.bind(this)}
>
<FormattedMessage
id="app.learningDashboard.downloadSessionDataLabel"
defaultMessage="Download Session Data"
/>
</button>
)
: null
}
</div>
</div>
);
Expand Down
9 changes: 5 additions & 4 deletions bigbluebutton-web/grails-app/conf/bigbluebutton.properties
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion docs/docs/data/create.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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)<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",
Expand Down
2 changes: 1 addition & 1 deletion docs/docs/development/api.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`

Expand Down

0 comments on commit 78ece5f

Please sign in to comment.