mirror of https://github.com/sualko/cloud_bbb
feat: invert access restriction
parent
d6abf23792
commit
0afe8818e5
|
@ -120,10 +120,9 @@ class JoinController extends Controller {
|
|||
\OCP\Util::addHeader('meta', ['http-equiv' => 'refresh', 'content' => '3;url='.$joinUrl]);
|
||||
|
||||
return new TemplateResponse($this->appName, 'forward', [
|
||||
'room' => $room->name,
|
||||
'url' => $joinUrl,
|
||||
'room' => $room->name,
|
||||
'url' => $joinUrl,
|
||||
], 'guest');
|
||||
;
|
||||
}
|
||||
|
||||
private function getRoom(): ?Room {
|
||||
|
|
|
@ -48,9 +48,7 @@ class RestrictionService {
|
|||
}
|
||||
|
||||
$rRoomTypes = \json_decode($r->getRoomTypes());
|
||||
if (count($rRoomTypes) > 0) {
|
||||
$roomTypes = \array_merge($roomTypes, $rRoomTypes);
|
||||
}
|
||||
$roomTypes = array_intersect($roomTypes, $rRoomTypes);
|
||||
|
||||
if ($restriction->getMaxParticipants() > -1 && ($r->getMaxParticipants() === -1 || $restriction->getMaxParticipants() < $r->getMaxParticipants())) {
|
||||
$restriction->setMaxParticipants($r->getMaxParticipants());
|
||||
|
@ -63,7 +61,7 @@ class RestrictionService {
|
|||
|
||||
$restriction->setId(0);
|
||||
$restriction->setGroupId('__cumulative');
|
||||
$restriction->setRoomTypes(\json_encode(\array_values(\array_unique($roomTypes))));
|
||||
$restriction->setRoomTypes(\json_encode(\array_values($roomTypes)));
|
||||
|
||||
return $restriction;
|
||||
}
|
||||
|
|
|
@ -6,9 +6,10 @@ type Props = {
|
|||
field: string;
|
||||
options: {[key: string]: string};
|
||||
placeholder?: string;
|
||||
invert?: boolean;
|
||||
}
|
||||
|
||||
const EditableSelection: React.FC<Props> = ({ setValue, field, values: currentValues, options, placeholder }) => {
|
||||
const EditableSelection: React.FC<Props> = ({ setValue, field, values: currentValues, options, placeholder, invert = false }) => {
|
||||
const [active, setActive] = useState<boolean>(false);
|
||||
|
||||
currentValues = currentValues || [];
|
||||
|
@ -29,15 +30,23 @@ const EditableSelection: React.FC<Props> = ({ setValue, field, values: currentVa
|
|||
}
|
||||
}
|
||||
|
||||
const selection = !invert ? currentValues : (currentValues.length ? Object.keys(options).filter(option => currentValues?.indexOf(option) < 0) : []);
|
||||
|
||||
return (<>
|
||||
<a className="action-rename" onClick={onClick}>{currentValues?.join(', ') || placeholder}</a>
|
||||
<a className="action-rename" onClick={onClick}>{selection.join(', ') || placeholder}</a>
|
||||
{active && <ul className="bbb-selection">
|
||||
{Object.keys(options).map(key => {
|
||||
const label = options[key];
|
||||
|
||||
return (
|
||||
<li key={key}>
|
||||
<input type="checkbox" id={key} className="checkbox" checked={currentValues.indexOf(key) > -1} value="1" onChange={(ev) => addOption(key, ev.target.checked)} />
|
||||
<input
|
||||
type="checkbox"
|
||||
id={key}
|
||||
className="checkbox"
|
||||
checked={(currentValues.indexOf(key) > -1) !== invert}
|
||||
value="1"
|
||||
onChange={(ev) => addOption(key, ev.target.checked !== invert)} />
|
||||
<label htmlFor={key}>{label}</label>
|
||||
</li>
|
||||
);
|
||||
|
|
|
@ -64,7 +64,7 @@ const App: React.FC<Props> = () => {
|
|||
{t('bbb', 'Max. rooms')}
|
||||
</th>
|
||||
<th>
|
||||
{t('bbb', 'Forbidden room types')}
|
||||
{t('bbb', 'Access options')}
|
||||
</th>
|
||||
<th>
|
||||
{t('bbb', 'Max. participants')}
|
||||
|
|
|
@ -48,7 +48,13 @@ const RestrictionRoom: React.FC<Props> = (props) => {
|
|||
</td>
|
||||
|
||||
<td>
|
||||
<EditableSelection field="roomTypes" values={restriction.roomTypes} options={AccessOptions} setValue={updateRestriction} placeholder={t('bbb', 'No restriction')} />
|
||||
<EditableSelection
|
||||
field="roomTypes"
|
||||
values={restriction.roomTypes}
|
||||
options={AccessOptions}
|
||||
setValue={updateRestriction}
|
||||
invert={true}
|
||||
placeholder={t('bbb', 'All')} />
|
||||
</td>
|
||||
|
||||
<td className="max-participants bbb-shrink">
|
||||
|
|
Loading…
Reference in New Issue