Compare commits

..

1 Commits

Author SHA1 Message Date
Sébastien Marinier f6bea2c115
Merge 65f5cd60af into c761e4eee1 2024-08-16 08:42:57 +02:00
11 changed files with 38 additions and 70 deletions

View File

@ -18,8 +18,6 @@ OC.L10N.register(
"Access" : "Åtkomst",
"Max" : "Max",
"Edit" : "Redigera",
"This message is shown to all users in the chat area after they joined." : "Detta meddelande visas för alla användare i chattområdet efter att de gått med.",
"If enabled, the user list, chat area and presentation are hidden by default." : "Om aktiverat är användarlistan, chattområdet och presentationen dolda som standard.",
"Welcome" : "Välkommen",
"Miscellaneous" : "Diverse",
"Recording" : "Inspelning",

View File

@ -16,8 +16,6 @@
"Access" : "Åtkomst",
"Max" : "Max",
"Edit" : "Redigera",
"This message is shown to all users in the chat area after they joined." : "Detta meddelande visas för alla användare i chattområdet efter att de gått med.",
"If enabled, the user list, chat area and presentation are hidden by default." : "Om aktiverat är användarlistan, chattområdet och presentationen dolda som standard.",
"Welcome" : "Välkommen",
"Miscellaneous" : "Diverse",
"Recording" : "Inspelning",

View File

@ -11,7 +11,6 @@ use OCP\AppFramework\Controller;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\DataResponse;
use OCP\IGroupManager;
use OCP\IRequest;
use OCP\IUserManager;
@ -25,9 +24,6 @@ class RoomShareController extends Controller {
/** @var IUserManager */
private $userManager;
/** @var IGroupManager */
private $groupManager;
/** @var RoomService */
private $roomService;
@ -41,7 +37,6 @@ class RoomShareController extends Controller {
IRequest $request,
RoomShareService $service,
IUserManager $userManager,
IGroupManager $groupManager,
RoomService $roomService,
CircleHelper $circleHelper,
$userId
@ -49,7 +44,6 @@ class RoomShareController extends Controller {
parent::__construct($appName, $request);
$this->service = $service;
$this->userManager = $userManager;
$this->groupManager = $groupManager;
$this->roomService = $roomService;
$this->circleHelper = $circleHelper;
$this->userId = $userId;
@ -96,14 +90,6 @@ class RoomShareController extends Controller {
}
$roomShare->setShareWithDisplayName($circle->getName());
} elseif ($roomShare->getShareType() === RoomShare::SHARE_TYPE_GROUP) {
$shareWithGroup = $this->groupManager->get($roomShare->getShareWith());
if ($shareWithGroup === null) {
continue;
}
$roomShare->setShareWithDisplayName($shareWithGroup->getDisplayName());
}
$shares[] = $roomShare;

View File

@ -9,7 +9,6 @@ use OCA\BigBlueButton\Db\RoomShare;
use OCA\BigBlueButton\Service\RoomService;
use OCA\BigBlueButton\Service\RoomShareService;
use OCP\AppFramework\Http;
use OCP\IGroupManager;
use OCP\IRequest;
use OCP\IUserManager;
use PHPUnit\Framework\TestCase;
@ -20,7 +19,6 @@ class RoomShareControllerTest extends TestCase {
private $roomService;
private $circleHelper;
private $userManager;
private $groupManager;
private $controller;
private $userId = 'user_foo';
@ -31,7 +29,6 @@ class RoomShareControllerTest extends TestCase {
$this->request = $this->createMock(IRequest::class);
$this->service = $this->createMock(RoomShareService::class);
$this->userManager = $this->createMock(IUserManager::class);
$this->groupManager = $this->createMock(IGroupManager::class);
$this->roomService = $this->createMock(RoomService::class);
$this->circleHelper = $this->createMock(CircleHelper::class);
@ -40,7 +37,6 @@ class RoomShareControllerTest extends TestCase {
$this->request,
$this->service,
$this->userManager,
$this->groupManager,
$this->roomService,
$this->circleHelper,
$this->userId

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

@ -161,24 +161,9 @@ pre {
.bbb-shrink {
width: 44px;
white-space: nowrap;
input[type="checkbox"]{
&+label:before {
border-radius: 3px;
border-width: 2px;
}
&:disabled+label:before {
opacity: .5;
}
&:not(input:checked):disabled+label:before {
background-color: transparent !important;
}
}
}
th {
padding: 14px 6px;
border-bottom: 1px var(--color-background-darker) solid;

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>
@ -132,27 +132,27 @@ const EditRoomDialog: React.FC<Props> = ({ room, restriction, updateProperty, op
{room.access === Access.InternalRestricted &&
<div className="bbb-form-element bbb-form-shareWith">
<span className="icon icon-details icon-visible"></span><em>{t('bbb', 'Access') + ' : ' + descriptions.internalRestrictedShareWith}</em>
<span className="icon icon-details icon-visible"></span><em>{`${t('bbb', 'Access')} : ${descriptions.internalRestrictedShareWith}`}</em>
</div>
}
<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>
@ -162,68 +162,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

@ -16,12 +16,12 @@ const RecordingRow: React.FC<Props> = ({recording, isAdmin, deleteRecording, sto
function checkPublished(recording: Recording, onChange: (value: boolean) => void) {
return (
<div>
<input id={'bbb-record-state-' + recording.id}
<input id={`bbb-record-state-${recording.id}`}
type="checkbox"
className="checkbox"
checked={recording.state === 'published'}
onChange={(event) => onChange(event.target.checked)} />
<label htmlFor={'bbb-record-state-' + recording.id}>{t('bbb', 'Published')}</label>
<label htmlFor={`bbb-record-state-${recording.id}`}>{t('bbb', 'Published')}</label>
</div>
);
}

View File

@ -221,7 +221,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')}>
@ -253,22 +253,27 @@ const RoomRow: React.FC<Props> = (props) => {
<td className="max-participants bbb-shrink">
{edit('maxParticipants', 'number', adminRoom, {min: minParticipantsLimit, max: maxParticipantsLimit < 0 ? undefined : maxParticipantsLimit})}
</td>
{adminRoom &&
<td className="record bbb-shrink">
<input id={'bbb-record-' + room.id} type="checkbox" className="checkbox" disabled={!adminRoom || !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>
}
{!adminRoom &&
<td className="record bbb-shrink">
<span className={'icon '+(room.record ? 'icon-checkmark' : 'icon-close')+' icon-visible'}></span>
</td>
}
<td className="bbb-shrink">
{<RecordingsNumber recordings={recordings} showRecordings={showRecordings} setShowRecordings={setShowRecordings} />}
{<RecordingsNumber recordings={recordings} showRecordings={showRecordings} setShowRecordings={setShowRecordings} />}
</td>
<td className="clone icon-col">
{adminRoom &&
<button
className="action-item"
onClick={cloneRow}
title={t('bbb', 'Clone room')}>
<span className="icon icon-template-add icon-visible"></span>
</button>
}
</td>
<td className="edit icon-col">
{adminRoom &&

View File

@ -101,13 +101,13 @@ 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.id === ROOM_OWNER_ID || !isOwner) && (' (' + permissionLabel(share.permission) + ')')}
{(share.id === ROOM_OWNER_ID || !isOwner) && ` (${permissionLabel(share.permission)})`}
</h5>
</div>
{(share.id > ROOM_OWNER_ID && isOwner) && selectPermission(share.permission, (value) => {

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">