Compare commits

..

No commits in common. "6ace43187002cb21a23aa353e3b76c066f0df1a2" and "adc4142211c416c199cf9d0dc6729f8385d6abe4" have entirely different histories.

7 changed files with 30 additions and 30 deletions

View File

@ -22,7 +22,7 @@ OC.L10N.register(
"API URL or secret not configured. Please contact your administrator." : "URL ou segredo da API sen configurar. Póñase en contacto coa administración desta instancia.",
"BigBlueButton Integration" : "Integración de BigBlueButton",
"BigBlueButton integration for Nextcloud" : "Integración de BigBlueButton en Nextcloud",
"This app allows to create meetings with an external installation of [BigBlueButton](https://bigbluebutton.org).\n\n* **Room setup** Create multiple room configurations with name, welcome message …\n* **Share guest link** Share the room link with all your guests\n* **Share moderator link** Invite moderators to the room\n* **Share rooms** Share rooms with members, groups or circles\n* **Custom presentation** Start a room with a selected presentation from your file browser\n* **Manage recordings** View, share and delete recordings for your rooms\n* **Restrictions** Restrict room creation to certain groups\n* **Activities** Get an overview of your room activities\n\nQuick start guide and further information in our [readme](https://github.com/sualko/cloud_bbb).\nDo you like this application? Give something back to the open source community and checkout our\n[ways to contribute](https://github.com/sualko/cloud_bbb/blob/master/.github/contributing.md).\n\nDeveloper wanted! If you have time it would be awesome if you could help to enhance this application.\n\n*This app integrates BigBlueButton and is not endorsed or certified by BigBlueButton Inc. BigBlueButton and the BigBlueButton Logo are trademarks of BigBlueButton Inc.*" : "Esta aplicación permite crear xuntanzas cunha instalación externa de [BigBlueButton] (https://bigbluebutton.org).\n\n* **Configuración de salas** Crear múltiples configuracións de salas con nome, mensaxe de benvida …\n* **Compartir a ligazón de convidados** Compartir a ligazón da sala con todos os seus convidados\n* **Compartir ligazón de moderador** Convida moderadores á sala\n* **Compartir salas** Compartir salas con membros, grupos ou círculos\n* **Presentación personalizada** Inicie unha sala cunha presentación seleccionada dende o seu navegador de ficheiros\n* **Xestionar as gravacións** Ver, compartir e eliminar as gravacións das súas salas\n* **Restricións** Restrinxir a creación de salas a determinados grupos\n* ** Actividades** Obteña unha vista xeral das actividades da súa sala\n\nGuía de inicio rápido e máis información no noso [léame](https://github.com/sualko/cloud_bbb).\nGústalle esta aplicación? Devolva algo á comunidade de código aberto e consulte as nosas\n[formas de colaborar](https://github.com/sualko/cloud_bbb/blob/master/.github/contributing.md).\n\nBúscase programador! Se ten tempo, sería incríbel que puidese axudar a mellorar esta aplicación.\n\n*Esta aplicación integra BigBlueButton e non está aprobada nin certificada por BigBlueButton Inc. BigBlueButton e o logotipo de BigBlueButton son marcas comerciais de BigBlueButton Inc.*",
"This app allows to create meetings with an external installation of [BigBlueButton](https://bigbluebutton.org).\n\n* **Room setup** Create multiple room configurations with name, welcome message …\n* **Share guest link** Share the room link with all your guests\n* **Share moderator link** Invite moderators to the room\n* **Share rooms** Share rooms with members, groups or circles\n* **Custom presentation** Start a room with a selected presentation from your file browser\n* **Manage recordings** View, share and delete recordings for your rooms\n* **Restrictions** Restrict room creation to certain groups\n* **Activities** Get an overview of your room activities\n\nQuick start guide and further information in our [readme](https://github.com/sualko/cloud_bbb).\nDo you like this application? Give something back to the open source community and checkout our\n[ways to contribute](https://github.com/sualko/cloud_bbb/blob/master/.github/contributing.md).\n\nDeveloper wanted! If you have time it would be awesome if you could help to enhance this application.\n\n*This app integrates BigBlueButton and is not endorsed or certified by BigBlueButton Inc. BigBlueButton and the BigBlueButton Logo are trademarks of BigBlueButton Inc.*" : "Esta aplicación permite crear xuntanzas cunha instalación externa de [BigBlueButton] (https://bigbluebutton.org).\n\n* **Configuración de salas** Crear múltiples configuracións de salas con nome, mensaxe de benvida …\n* **Compartir a ligazón de convidados** Compartir a ligazón da sala con todos os seus convidados\n* **Compartir ligazón de moderador** Convida moderadores á sala\n* **Compartir salas** Compartir salas con membros, grupos ou círculos\n* **Presentación personalizada** Inicie unha sala cunha presentación seleccionada dende o seu navegador de ficheiros\n* **Xestionar as gravacións** Ver, compartir e eliminar as gravacións das súas salas\n* **Restricións** Restrinxir a creación de salas a determinados grupos\n* ** Actividades** Obteña unha visión xeral das actividades da súa sala\n\nGuía de inicio rápido e máis información no noso [léame](https://github.com/sualko/cloud_bbb).\nGústalle esta aplicación? Devolva algo á comunidade de código aberto e consulte as nosas\n[formas de colaborar](https://github.com/sualko/cloud_bbb/blob/master/.github/contributing.md).\n\nBúscase programador! Se ten tempo, sería incríbel que puidese axudar a mellorar esta aplicación.\n\n*Esta aplicación integra BigBlueButton e non está aprobada nin certificada por BigBlueButton Inc. BigBlueButton e o logotipo de BigBlueButton son marcas comerciais de BigBlueButton Inc.*",
"Room not found" : "Non se atopou a sala",
"The room could not be found. Maybe it was deleted?" : "Non foi posíbel atopar a sala. Quizais foi eliminada.",
"Back to %s" : "Volver a %s",

View File

@ -20,7 +20,7 @@
"API URL or secret not configured. Please contact your administrator." : "URL ou segredo da API sen configurar. Póñase en contacto coa administración desta instancia.",
"BigBlueButton Integration" : "Integración de BigBlueButton",
"BigBlueButton integration for Nextcloud" : "Integración de BigBlueButton en Nextcloud",
"This app allows to create meetings with an external installation of [BigBlueButton](https://bigbluebutton.org).\n\n* **Room setup** Create multiple room configurations with name, welcome message …\n* **Share guest link** Share the room link with all your guests\n* **Share moderator link** Invite moderators to the room\n* **Share rooms** Share rooms with members, groups or circles\n* **Custom presentation** Start a room with a selected presentation from your file browser\n* **Manage recordings** View, share and delete recordings for your rooms\n* **Restrictions** Restrict room creation to certain groups\n* **Activities** Get an overview of your room activities\n\nQuick start guide and further information in our [readme](https://github.com/sualko/cloud_bbb).\nDo you like this application? Give something back to the open source community and checkout our\n[ways to contribute](https://github.com/sualko/cloud_bbb/blob/master/.github/contributing.md).\n\nDeveloper wanted! If you have time it would be awesome if you could help to enhance this application.\n\n*This app integrates BigBlueButton and is not endorsed or certified by BigBlueButton Inc. BigBlueButton and the BigBlueButton Logo are trademarks of BigBlueButton Inc.*" : "Esta aplicación permite crear xuntanzas cunha instalación externa de [BigBlueButton] (https://bigbluebutton.org).\n\n* **Configuración de salas** Crear múltiples configuracións de salas con nome, mensaxe de benvida …\n* **Compartir a ligazón de convidados** Compartir a ligazón da sala con todos os seus convidados\n* **Compartir ligazón de moderador** Convida moderadores á sala\n* **Compartir salas** Compartir salas con membros, grupos ou círculos\n* **Presentación personalizada** Inicie unha sala cunha presentación seleccionada dende o seu navegador de ficheiros\n* **Xestionar as gravacións** Ver, compartir e eliminar as gravacións das súas salas\n* **Restricións** Restrinxir a creación de salas a determinados grupos\n* ** Actividades** Obteña unha vista xeral das actividades da súa sala\n\nGuía de inicio rápido e máis información no noso [léame](https://github.com/sualko/cloud_bbb).\nGústalle esta aplicación? Devolva algo á comunidade de código aberto e consulte as nosas\n[formas de colaborar](https://github.com/sualko/cloud_bbb/blob/master/.github/contributing.md).\n\nBúscase programador! Se ten tempo, sería incríbel que puidese axudar a mellorar esta aplicación.\n\n*Esta aplicación integra BigBlueButton e non está aprobada nin certificada por BigBlueButton Inc. BigBlueButton e o logotipo de BigBlueButton son marcas comerciais de BigBlueButton Inc.*",
"This app allows to create meetings with an external installation of [BigBlueButton](https://bigbluebutton.org).\n\n* **Room setup** Create multiple room configurations with name, welcome message …\n* **Share guest link** Share the room link with all your guests\n* **Share moderator link** Invite moderators to the room\n* **Share rooms** Share rooms with members, groups or circles\n* **Custom presentation** Start a room with a selected presentation from your file browser\n* **Manage recordings** View, share and delete recordings for your rooms\n* **Restrictions** Restrict room creation to certain groups\n* **Activities** Get an overview of your room activities\n\nQuick start guide and further information in our [readme](https://github.com/sualko/cloud_bbb).\nDo you like this application? Give something back to the open source community and checkout our\n[ways to contribute](https://github.com/sualko/cloud_bbb/blob/master/.github/contributing.md).\n\nDeveloper wanted! If you have time it would be awesome if you could help to enhance this application.\n\n*This app integrates BigBlueButton and is not endorsed or certified by BigBlueButton Inc. BigBlueButton and the BigBlueButton Logo are trademarks of BigBlueButton Inc.*" : "Esta aplicación permite crear xuntanzas cunha instalación externa de [BigBlueButton] (https://bigbluebutton.org).\n\n* **Configuración de salas** Crear múltiples configuracións de salas con nome, mensaxe de benvida …\n* **Compartir a ligazón de convidados** Compartir a ligazón da sala con todos os seus convidados\n* **Compartir ligazón de moderador** Convida moderadores á sala\n* **Compartir salas** Compartir salas con membros, grupos ou círculos\n* **Presentación personalizada** Inicie unha sala cunha presentación seleccionada dende o seu navegador de ficheiros\n* **Xestionar as gravacións** Ver, compartir e eliminar as gravacións das súas salas\n* **Restricións** Restrinxir a creación de salas a determinados grupos\n* ** Actividades** Obteña unha visión xeral das actividades da súa sala\n\nGuía de inicio rápido e máis información no noso [léame](https://github.com/sualko/cloud_bbb).\nGústalle esta aplicación? Devolva algo á comunidade de código aberto e consulte as nosas\n[formas de colaborar](https://github.com/sualko/cloud_bbb/blob/master/.github/contributing.md).\n\nBúscase programador! Se ten tempo, sería incríbel que puidese axudar a mellorar esta aplicación.\n\n*Esta aplicación integra BigBlueButton e non está aprobada nin certificada por BigBlueButton Inc. BigBlueButton e o logotipo de BigBlueButton son marcas comerciais de BigBlueButton Inc.*",
"Room not found" : "Non se atopou a sala",
"The room could not be found. Maybe it was deleted?" : "Non foi posíbel atopar a sala. Quizais foi eliminada.",
"Back to %s" : "Volver a %s",

View File

@ -78,7 +78,7 @@ const ShareSelection: React.FC<Props> = (props) => {
className="suggestion"
onMouseDown={preventOnBlurEvent}
onClick={() => selectShare(option)}>
{option.label}{option.value.shareType === ShareType.Group ? ' (' + t('bbb', 'Group') + ')' : ''}
{option.label}{option.value.shareType === ShareType.Group ? ` (${t('bbb', 'Group')})` : ''}
</li>);
};

View File

@ -65,7 +65,7 @@ const EditRoomDialog: React.FC<Props> = ({ room, restriction, updateProperty, op
function inputElement(label: string, field: string, type: 'text' | 'number' = 'text') {
return (
<div className="bbb-form-element">
<label htmlFor={'bbb-' + field}>
<label htmlFor={`bbb-${field}`}>
<h3>{label}</h3>
</label>
@ -78,7 +78,7 @@ const EditRoomDialog: React.FC<Props> = ({ room, restriction, updateProperty, op
function selectElement(label: string, field: string, value: string, options: { [key: string]: string }, onChange: (value: string) => void) {
return (
<div className="bbb-form-element">
<label htmlFor={'bbb-' + field}>
<label htmlFor={`bbb-${field}`}>
<h3>{label}</h3>
</label>
@ -136,22 +136,22 @@ const EditRoomDialog: React.FC<Props> = ({ room, restriction, updateProperty, op
{!room.everyoneIsModerator && <ShareWith permission={Permission.Moderator} room={room} shares={shares} setShares={setShares} />}
<div className="bbb-mt-1">
<input id={'bbb-everyoneIsModerator-' + room.id}
<input id={`bbb-everyoneIsModerator-${room.id}`}
type="checkbox"
className="checkbox"
checked={room.everyoneIsModerator}
onChange={(event) => updateProperty('everyoneIsModerator', event.target.checked)} />
<label htmlFor={'bbb-everyoneIsModerator-' + room.id}>{t('bbb', 'Every participant is moderator')}</label>
<label htmlFor={`bbb-everyoneIsModerator-${room.id}`}>{t('bbb', 'Every participant is moderator')}</label>
</div>
<em>{descriptions.moderator}</em>
<div className="bbb-mt-1">
<input id={'bbb-moderatorToken-' + room.id}
<input id={`bbb-moderatorToken-${room.id}`}
type="checkbox"
className="checkbox"
checked={!!room.moderatorToken}
onChange={(event) => updateProperty('moderatorToken', event.target.checked ? 'true' : null)} />
<label htmlFor={'bbb-moderatorToken-' + room.id}>{t('bbb', 'Moderator access via URL')}</label>
<label htmlFor={`bbb-moderatorToken-${room.id}`}>{t('bbb', 'Moderator access via URL')}</label>
</div>
{!!room.moderatorToken && <CopyToClipboard text={api.getRoomUrl(room, true)}><input type="text" readOnly={true} className="icon-clippy" value={api.getRoomUrl(room, true)} /></CopyToClipboard>}
<em>{descriptions.moderatorToken}</em>
@ -161,68 +161,68 @@ const EditRoomDialog: React.FC<Props> = ({ room, restriction, updateProperty, op
<h3>{t('bbb', 'Miscellaneous')}</h3>
<div>
<div>
<input id={'bbb-record-' + room.id}
<input id={`bbb-record-${room.id}`}
type="checkbox"
className="checkbox"
checked={room.record}
disabled={!restriction?.allowRecording}
onChange={(event) => updateProperty('record', event.target.checked)} />
<label htmlFor={'bbb-record-' + room.id}>{t('bbb', 'Recording')}</label>
<label htmlFor={`bbb-record-${room.id}`}>{t('bbb', 'Recording')}</label>
</div>
<p><em>{descriptions.recording}</em></p>
</div>
<div>
<div>
<input id={'bbb-requireModerator-' + room.id}
<input id={`bbb-requireModerator-${room.id}`}
type="checkbox"
className="checkbox"
checked={room.requireModerator}
onChange={(event) => updateProperty('requireModerator', event.target.checked)} />
<label htmlFor={'bbb-requireModerator-' + room.id}>{t('bbb', 'Require moderator to start room')}</label>
<label htmlFor={`bbb-requireModerator-${room.id}`}>{t('bbb', 'Require moderator to start room')}</label>
</div>
<p><em>{descriptions.requireModerator}</em></p>
</div>
<div>
<div>
<input id={'bbb-listenOnly-' + room.id}
<input id={`bbb-listenOnly-${room.id}`}
type="checkbox"
className="checkbox"
checked={room.listenOnly}
onChange={(event) => updateProperty('listenOnly', event.target.checked)} />
<label htmlFor={'bbb-listenOnly-' + room.id}>{t('bbb', 'Listen only option')}</label>
<label htmlFor={`bbb-listenOnly-${room.id}`}>{t('bbb', 'Listen only option')}</label>
</div>
<p><em>{descriptions.listenOnly}</em></p>
</div>
<div>
<div>
<input id={'bbb-mediaCheck-' + room.id}
<input id={`bbb-mediaCheck-${room.id}`}
type="checkbox"
className="checkbox"
checked={!room.mediaCheck}
onChange={(event) => updateProperty('mediaCheck', !event.target.checked)} />
<label htmlFor={'bbb-mediaCheck-' + room.id}>{t('bbb', 'Skip media check before usage')}</label>
<label htmlFor={`bbb-mediaCheck-${room.id}`}>{t('bbb', 'Skip media check before usage')}</label>
</div>
<p><em>{descriptions.mediaCheck}</em></p>
</div>
<div>
<div>
<input id={'bbb-cleanLayout-' + room.id}
<input id={`bbb-cleanLayout-${room.id}`}
type="checkbox"
className="checkbox"
checked={room.cleanLayout}
onChange={(event) => updateProperty('cleanLayout', event.target.checked)} />
<label htmlFor={'bbb-cleanLayout-' + room.id}>{t('bbb', 'Clean layout')}</label>
<label htmlFor={`bbb-cleanLayout-${room.id}`}>{t('bbb', 'Clean layout')}</label>
</div>
<p><em>{descriptions.cleanLayout}</em></p>
</div>
<div>
<div>
<input id={'bbb-joinMuted-' + room.id}
<input id={`bbb-joinMuted-${room.id}`}
type="checkbox"
className="checkbox"
checked={room.joinMuted}
onChange={(event) => updateProperty('joinMuted', event.target.checked)} />
<label htmlFor={'bbb-joinMuted-' + room.id}>{t('bbb', 'Join meeting muted')}</label>
<label htmlFor={`bbb-joinMuted-${room.id}`}>{t('bbb', 'Join meeting muted')}</label>
</div>
<p><em>{descriptions.joinMuted}</em></p>
</div>

View File

@ -194,7 +194,7 @@ const RoomRow: React.FC<Props> = (props) => {
<tr className={showRecordings ? 'selected-row' : ''}>
<td className="start">
<a href={api.getRoomUrl(room)}
className={'button ' + (room.running ? 'success' : 'primary')}
className={`button ${room.running ? 'success' : 'primary'}`}
target="_blank"
rel="noopener noreferrer"
title={t('bbb', 'Open room')}>
@ -227,8 +227,8 @@ const RoomRow: React.FC<Props> = (props) => {
{edit('maxParticipants', 'number', {min: minParticipantsLimit, max: maxParticipantsLimit < 0 ? undefined : maxParticipantsLimit})}
</td>
<td className="record bbb-shrink">
<input id={'bbb-record-' + room.id} type="checkbox" className="checkbox" disabled={!props.restriction?.allowRecording} checked={room.record} onChange={(event) => updateRoom('record', event.target.checked)} />
<label htmlFor={'bbb-record-' + room.id}></label>
<input id={`bbb-record-${room.id}`} type="checkbox" className="checkbox" disabled={!props.restriction?.allowRecording} checked={room.record} onChange={(event) => updateRoom('record', event.target.checked)} />
<label htmlFor={`bbb-record-${room.id}`}></label>
</td>
<td className="bbb-shrink"><RecordingsNumber recordings={recordings} showRecordings={showRecordings} setShowRecordings={setShowRecordings} /></td>
<td className="edit icon-col">

View File

@ -79,14 +79,14 @@ const ShareWith: React.FC<Props> = ({ room, permission, shares: allShares, setSh
return (
<li key={share.id} className="bbb-shareWith__item">
<div className="avatardiv">
{avatarUrl && <img src={avatarUrl} alt={'Avatar from ' + displayName} />}
{avatarUrl && <img src={avatarUrl} alt={`Avatar from ${displayName}`} />}
{share.shareType === ShareType.Group && <span className="icon-group-white"></span>}
{share.shareType === ShareType.Circle && <span className="icon-circle-white"></span>}
</div>
<div className="bbb-shareWith__item__label">
<h5>{displayName}
{(share.permission === Permission.Moderator && permission === Permission.User) && (' (' + t('bbb', 'moderator') + ')')}
{(share.permission === Permission.Admin) && (' (' + t('bbb', 'admin') + ')')}</h5>
{(share.permission === Permission.Moderator && permission === Permission.User) && ` (${t('bbb', 'moderator')})`}
{(share.permission === Permission.Admin) && ` (${t('bbb', 'admin')})`}</h5>
</div>
{(share.id > -1 && permission === Permission.Moderator && isOwner) && <div className="bbb-shareWith__item__action">
<button className="action-item"
@ -95,7 +95,7 @@ const ShareWith: React.FC<Props> = ({ room, permission, shares: allShares, setSh
toggleAdminShare(share);
}}
title={t('bbb', 'Share')}>
<span className={'icon icon-shared icon-visible ' + (share.permission === Permission.Admin ? 'bbb-icon-selected' : 'bbb-icon-unselected')}></span>
<span className={`icon icon-shared icon-visible ${share.permission === Permission.Admin ? 'bbb-icon-selected' : 'bbb-icon-unselected'}`}></span>
</button>
</div>}
{(share.id > -1 && isOwner) && <div className="bbb-shareWith__item__action">

View File

@ -63,12 +63,12 @@ const RestrictionRoom: React.FC<Props> = (props) => {
<td className="record bbb-shrink">
<input
id={'bbb-record-' + restriction.id}
id={`bbb-record-${restriction.id}`}
type="checkbox"
className="checkbox"
checked={restriction.allowRecording}
onChange={(event) => updateRestriction('allowRecording', event.target.checked)} />
<label htmlFor={'bbb-record-' + restriction.id}></label>
<label htmlFor={`bbb-record-${restriction.id}`}></label>
</td>
<td className="remove icon-col">