a161fa8519
If the target user belongs to [A, B, C] and the acting admin belongs to [B, C], only B and C get detached. Company A — which the acting admin can't see — is left untouched.
494 lines
29 KiB
PHP
494 lines
29 KiB
PHP
@extends('layouts/default')
|
|
{{-- Page title --}}
|
|
@section('title')
|
|
{{ trans('general.bulk_edit') }}
|
|
@parent
|
|
@stop
|
|
|
|
|
|
@section('header_right')
|
|
<a href="{{ URL::previous() }}" class="btn btn-sm btn-theme pull-right">
|
|
{{ trans('general.back') }}</a>
|
|
@stop
|
|
|
|
{{-- Page content --}}
|
|
@section('content')
|
|
|
|
<style>
|
|
.radio {
|
|
margin-left: -20px;
|
|
}
|
|
</style>
|
|
<div class="row">
|
|
<div class="col-md-8 col-md-offset-2">
|
|
|
|
<p>{{ trans('admin/users/general.bulk_update_help') }}</p>
|
|
|
|
<div class="callout callout-warning">
|
|
<i class="fas fa-exclamation-triangle"></i> {{ trans('admin/users/general.bulk_update_warn', ['user_count' => count($users)]) }}
|
|
</div>
|
|
|
|
<form class="form-horizontal" method="post" action="{{ route('users/bulkeditsave') }}" autocomplete="off" role="form">
|
|
{{ csrf_field() }}
|
|
|
|
<div class="box box-default">
|
|
<div class="box-body">
|
|
|
|
|
|
<!-- Department -->
|
|
@include ('partials.forms.edit.department-select', ['translated_name' => trans('general.department'), 'fieldname' => 'department_id'])
|
|
|
|
|
|
<div class="form-group">
|
|
<div class=" col-md-9 col-md-offset-3">
|
|
<label class="form-control">
|
|
<input type="checkbox" name="null_department_id" value="1" />
|
|
{{ trans_choice('general.set_users_field_to_null', count($users), ['field' => trans('general.department'), 'user_count' => count($users)]) }}
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<!-- Location -->
|
|
@include ('partials.forms.edit.location-select', ['translated_name' => trans('general.location'), 'fieldname' => 'location_id'])
|
|
|
|
<div class="form-group">
|
|
<div class=" col-md-9 col-md-offset-3">
|
|
<label class="form-control">
|
|
<input type="checkbox" name="null_location_id" value="1" />
|
|
{{ trans_choice('general.set_users_field_to_null', count($users), ['field' => trans('general.location'), 'user_count' => count($users)]) }}
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<!-- Company -->
|
|
@if (\App\Models\Company::canManageUsersCompanies())
|
|
@include ('partials.forms.edit.company-select', ['translated_name' => trans('general.select_company'), 'fieldname' => 'company_ids', 'multiple' => 'true'])
|
|
|
|
<div class="form-group">
|
|
<div class=" col-md-9 col-md-offset-3">
|
|
<label class="form-control">
|
|
<input type="checkbox" name="null_company_ids" value="1" />
|
|
{{ trans_choice('general.set_users_field_to_null', count($users), ['field' => trans('general.companies'), 'user_count' => count($users)]) }}
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
@endif
|
|
|
|
<!-- Manager -->
|
|
@include ('partials.forms.edit.user-select', ['translated_name' => trans('admin/users/table.manager'), 'fieldname' => 'manager_id'])
|
|
|
|
<div class="form-group">
|
|
<div class=" col-md-9 col-md-offset-3">
|
|
<label class="form-control">
|
|
<input type="checkbox" name="null_manager_id" value="1" />
|
|
{{ trans_choice('general.set_users_field_to_null', count($users), ['field' => trans('admin/users/table.manager'), 'user_count' => count($users)]) }}
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<!-- Language -->
|
|
<div class="form-group {{ $errors->has('locale') ? 'has-error' : '' }}">
|
|
<label class="col-md-3 control-label" for="locale">{{ trans('general.language') }}</label>
|
|
<div class="col-md-8">
|
|
<x-input.locale-select name="locale" :selected="old('locale', '')"/>
|
|
{!! $errors->first('locale', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<div class=" col-md-9 col-md-offset-3">
|
|
<label class="form-control">
|
|
<input type="checkbox" name="null_locale" value="1" />
|
|
{{ trans_choice('general.set_users_field_to_null', count($users), ['field' => trans('general.language'), 'user_count' => count($users)]) }}
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- City -->
|
|
<div class="form-group{{ $errors->has('city') ? ' has-error' : '' }}">
|
|
<label class="col-md-3 control-label" for="city">{{ trans('general.city') }}</label>
|
|
<div class="col-md-4">
|
|
<input class="form-control" type="text" name="city" id="city" aria-label="city" />
|
|
{!! $errors->first('city', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<div class=" col-md-9 col-md-offset-3">
|
|
<label class="form-control">
|
|
<input type="checkbox" name="null_city" value="1" />
|
|
{{ trans_choice('general.set_users_field_to_null', count($users), ['field' => trans('general.city'), 'user_count' => count($users)]) }}
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- State -->
|
|
<div class="form-group{{ $errors->has('state') ? ' has-error' : '' }}">
|
|
<label class="col-md-3 control-label" for="state">{{ trans('general.state') }}</label>
|
|
<div class="col-md-4">
|
|
<input class="form-control" type="text" name="state" id="state" aria-label="state" maxlength="191" />
|
|
{!! $errors->first('state', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<div class=" col-md-9 col-md-offset-3">
|
|
<label class="form-control">
|
|
<input type="checkbox" name="null_state" value="1" />
|
|
{{ trans_choice('general.set_users_field_to_null', count($users), ['field' => trans('general.state'), 'user_count' => count($users)]) }}
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Country -->
|
|
<div class="form-group{{ $errors->has('country') ? ' has-error' : '' }}">
|
|
<label class="col-md-3 control-label" for="country">{{ trans('general.country') }}</label>
|
|
<div class="col-md-4">
|
|
<x-input.country-select name="country" :selected="old('country', '')" />
|
|
{!! $errors->first('country', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<div class=" col-md-9 col-md-offset-3">
|
|
<label class="form-control">
|
|
<input type="checkbox" name="null_country" value="1" />
|
|
{{ trans_choice('general.set_users_field_to_null', count($users), ['field' => trans('general.country'), 'user_count' => count($users)]) }}
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Zip -->
|
|
<div class="form-group{{ $errors->has('zip') ? ' has-error' : '' }}">
|
|
<label class="col-md-3 control-label" for="zip">{{ trans('general.zip') }}</label>
|
|
<div class="col-md-4">
|
|
<input class="form-control" type="text" name="zip" id="zip" aria-label="zip" maxlength="10" />
|
|
{!! $errors->first('zip', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<div class=" col-md-9 col-md-offset-3">
|
|
<label class="form-control">
|
|
<input type="checkbox" name="null_zip" value="1" />
|
|
{{ trans_choice('general.set_users_field_to_null', count($users), ['field' => trans('general.zip'), 'user_count' => count($users)]) }}
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Address -->
|
|
<div class="form-group{{ $errors->has('address') ? ' has-error' : '' }}">
|
|
<label class="col-md-3 control-label" for="address">{{ trans('general.address') }}</label>
|
|
<div class="col-md-4">
|
|
<input class="form-control" type="text" name="address" id="address" aria-label="address" maxlength="191" />
|
|
{!! $errors->first('address', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<div class=" col-md-9 col-md-offset-3">
|
|
<label class="form-control">
|
|
<input type="checkbox" name="null_address" value="1" />
|
|
{{ trans_choice('general.set_users_field_to_null', count($users), ['field' => trans('general.address'), 'user_count' => count($users)]) }}
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Phone -->
|
|
<div class="form-group{{ $errors->has('phone') ? ' has-error' : '' }}">
|
|
<label class="col-md-3 control-label" for="phone">{{ trans('admin/users/table.phone') }}</label>
|
|
<div class="col-md-4">
|
|
<input class="form-control" type="text" name="phone" id="phone" aria-label="phone" maxlength="191" />
|
|
{!! $errors->first('phone', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<div class=" col-md-9 col-md-offset-3">
|
|
<label class="form-control">
|
|
<input type="checkbox" name="null_phone" value="1" />
|
|
{{ trans_choice('general.set_users_field_to_null', count($users), ['field' => trans('admin/users/table.phone'), 'user_count' => count($users)]) }}
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Job Title -->
|
|
<div class="form-group{{ $errors->has('jobtitle') ? ' has-error' : '' }}">
|
|
<label class="col-md-3 control-label" for="jobtitle">{{ trans('admin/users/table.title') }}</label>
|
|
<div class="col-md-4">
|
|
<input class="form-control" type="text" name="jobtitle" id="jobtitle" aria-label="jobtitle" maxlength="191" />
|
|
{!! $errors->first('jobtitle', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<div class=" col-md-9 col-md-offset-3">
|
|
<label class="form-control">
|
|
<input type="checkbox" name="null_jobtitle" value="1" />
|
|
{{ trans_choice('general.set_users_field_to_null', count($users), ['field' => trans('admin/users/table.title'), 'user_count' => count($users)]) }}
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Employee Number (clear only — employee numbers are unique per user) -->
|
|
<div class="form-group">
|
|
<label class="col-md-3 control-label">{{ trans('general.employee_number') }}</label>
|
|
<div class=" col-md-9">
|
|
<label class="form-control">
|
|
<input type="checkbox" name="null_employee_num" value="1" />
|
|
{{ trans_choice('general.set_users_field_to_null', count($users), ['field' => trans('general.employee_number'), 'user_count' => count($users)]) }}
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Website -->
|
|
<div class="form-group{{ $errors->has('website') ? ' has-error' : '' }}">
|
|
<label class="col-md-3 control-label" for="website">{{ trans('general.website') }}</label>
|
|
<div class="col-md-4">
|
|
<input class="form-control" type="url" name="website" id="website" aria-label="website" maxlength="191" />
|
|
{!! $errors->first('website', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<div class=" col-md-9 col-md-offset-3">
|
|
<label class="form-control">
|
|
<input type="checkbox" name="null_website" value="1" />
|
|
{{ trans_choice('general.set_users_field_to_null', count($users), ['field' => trans('general.website'), 'user_count' => count($users)]) }}
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- remote -->
|
|
<div class="form-group">
|
|
<div class="col-sm-3 control-label">
|
|
{{ trans('admin/users/general.remote') }}
|
|
</div>
|
|
<div class="col-sm-9">
|
|
|
|
<label for="no_change_remote" class="form-control">
|
|
<input type="radio" name="remote" id="no_change_remote" value="" checked aria-label="no_change_remote">
|
|
{{ trans('general.do_not_change') }}
|
|
</label>
|
|
<label for="remote" class="form-control">
|
|
<input type="radio" name="remote" id="remote" value="1" aria-label="remote">
|
|
{{ trans('admin/users/general.remote_label') }}
|
|
</label>
|
|
<label for="not_remote" class="form-control">
|
|
<input type="radio" name="remote" id="not_remote" value="0" aria-label="not_remote">
|
|
{{ trans('admin/users/general.not_remote_label') }}
|
|
</label>
|
|
|
|
|
|
</div>
|
|
</div> <!--/form-group-->
|
|
|
|
<!-- ldap_sync -->
|
|
<div class="form-group">
|
|
<div class="col-sm-3 control-label">
|
|
{{ trans('general.user_managed_passwords') }}
|
|
</div>
|
|
<div class="col-sm-9">
|
|
<label for="no_change_ldap_import" class="form-control">
|
|
<input type="radio" name="ldap_import" id="no_change_ldap_import" value="" checked aria-label="no_change_ldap_import">
|
|
{{ trans('general.do_not_change') }}
|
|
</label>
|
|
<label for="no_ldap_import" class="form-control">
|
|
<input type="radio" name="ldap_import" id="no_ldap_import" value="0" aria-label="no_ldap_import">
|
|
{{ trans('general.user_managed_passwords_allow') }}
|
|
</label>
|
|
<label for="ldap_import" class="form-control">
|
|
<input type="radio" name="ldap_import" id="ldap_import" value="1" aria-label="ldap_import">
|
|
{{ trans('general.user_managed_passwords_disallow') }}
|
|
</label>
|
|
<p class="help-block">{{ trans('general.user_managed_passwords_bulk_help') }}</p>
|
|
</div>
|
|
</div> <!--/form-group-->
|
|
|
|
<!-- activated -->
|
|
<div class="form-group">
|
|
<div class="col-sm-3 control-label">
|
|
{{ trans('general.autoassign_licenses') }}
|
|
</div>
|
|
<div class="col-sm-9">
|
|
|
|
<label for="no_change_autoassign_licenses" class="form-control">
|
|
<input type="radio" name="autoassign_licenses" id="no_change_autoassign_licenses" value="" checked aria-label="no_change_autoassign_licenses">
|
|
{{ trans('general.do_not_change') }}
|
|
</label>
|
|
<label for="autoassign_licenses" class="form-control">
|
|
<input type="radio" name="autoassign_licenses" id="autoassign_licenses" value="1" aria-label="autoassign_licenses">
|
|
{{ trans('general.autoassign_licenses_help')}}
|
|
</label>
|
|
<label for="dont_autoassign_licenses" class="form-control">
|
|
<input type="radio" name="autoassign_licenses" id="dont_autoassign_licenses" value="0" aria-label="dont_autoassign_licenses">
|
|
{{ trans('general.no_autoassign_licenses_help')}}
|
|
</label>
|
|
|
|
</div>
|
|
</div> <!--/form-group-->
|
|
|
|
<!-- activated -->
|
|
<div class="form-group">
|
|
<div class="col-sm-3 control-label">
|
|
{{ trans('general.login_enabled') }}
|
|
</div>
|
|
<div class="col-sm-9">
|
|
|
|
<label for="no_change_activated" class="form-control">
|
|
<input type="radio" name="activated" id="no_change_activated" value="" checked aria-label="no_change_activated">
|
|
{{ trans('general.do_not_change') }}
|
|
</label>
|
|
<label for="activated" class="form-control">
|
|
<input type="radio" name="activated" id="activated" value="1" aria-label="activated">
|
|
{{ trans('admin/users/general.user_activated')}}
|
|
</label>
|
|
<label for="deactivated" class="form-control">
|
|
<input type="radio" name="activated" id="deactivated" value="0" aria-label="deactivated">
|
|
{{ trans('admin/users/general.user_deactivated')}}
|
|
</label>
|
|
|
|
</div>
|
|
</div> <!--/form-group-->
|
|
|
|
|
|
<!-- Email (auth-sensitive: only applied to users the acting user can edit) -->
|
|
<div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
|
|
<label class="col-md-3 control-label" for="email">{{ trans('admin/users/table.email') }}</label>
|
|
<div class="col-md-4">
|
|
<input class="form-control" type="email" name="email" id="email" aria-label="email" maxlength="191" />
|
|
{!! $errors->first('email', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<div class=" col-md-9 col-md-offset-3">
|
|
<label class="form-control">
|
|
<input type="checkbox" name="null_email" value="1" />
|
|
{{ trans_choice('general.set_users_field_to_null', count($users), ['field' => trans('admin/users/table.email'), 'user_count' => count($users)]) }}
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Groups -->
|
|
<div class="form-group{{ $errors->has('groups') ? ' has-error' : '' }}">
|
|
<label class="col-md-3 control-label" for="groups"> {{ trans('general.groups') }}</label>
|
|
<div class="col-md-6">
|
|
@if ((config('app.lock_passwords') || (!Auth::user()->isSuperUser())))
|
|
<p class="help-block">{{ trans('admin/users/general.group_memberships_helpblock') }}</p>
|
|
@else
|
|
<div class="controls">
|
|
<select name="groups[]" id="groups[]" multiple="multiple" class="form-control" aria-label="groups">
|
|
<option value="">{{ trans('admin/users/general.remove_group_memberships') }} </option>
|
|
|
|
@foreach ($groups as $id => $group)
|
|
<option value="{{ $id }}">{{ $group }} </option>
|
|
@endforeach
|
|
</select>
|
|
|
|
<span class="help-block">
|
|
{{ trans('admin/users/table.groupnotes') }}
|
|
</span>
|
|
</div> <!--/controls-->
|
|
@endif
|
|
</div> <!--/col-md-5-->
|
|
</div>
|
|
|
|
<!-- Display Name -->
|
|
<div class="form-group {{ $errors->has('display_name') ? ' has-error' : '' }}">
|
|
<label for="display_name" class="col-md-3 control-label">{{ trans('admin/users/table.display_name') }}</label>
|
|
<div class="col-md-4">
|
|
<input type="text" class="form-control" placeholder="{{ trans('admin/users/table.display_name') }}" name="display_name" id="display_name" value="{{ old('display_name') }}">
|
|
{!! $errors->first('display_name', '<span class="alert-msg"><i class="fas fa-times"></i> :message</span>') !!}
|
|
</div>
|
|
<div class="col-md-5">
|
|
<label class="form-control">
|
|
<input type="checkbox" name="null_display_name" value="1" />
|
|
{{ trans_choice('general.set_to_null', count($users),['selection_count' => count($users)]) }}
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<!-- Start Date -->
|
|
<div class="form-group{{ $errors->has('start_date') ? ' has-error' : '' }}">
|
|
<label for="start_date" class="col-md-3 control-label">{{ trans('general.start_date') }}</label>
|
|
<div class="col-md-4">
|
|
<x-input.datepicker
|
|
name="start_date"
|
|
value="{{ old('start_date') }}"
|
|
placeholder="{{ trans('general.select_date') }}"
|
|
/>
|
|
{!! $errors->first('start_date', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}
|
|
</div>
|
|
<div class="col-md-5">
|
|
<label class="form-control">
|
|
<input type="checkbox" name="null_start_date" value="1">
|
|
{{ trans_choice('general.set_to_null', count($users),['selection_count' => count($users)]) }}
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<!-- End Date -->
|
|
<div class="form-group{{ $errors->has('end_date') ? ' has-error' : '' }}">
|
|
<label for="end_date" class="col-md-3 control-label">{{ trans('general.end_date') }}</label>
|
|
<div class="col-md-4">
|
|
<x-input.datepicker
|
|
name="end_date"
|
|
value="{{ old('end_date') }}"
|
|
placeholder="{{ trans('general.select_date') }}"
|
|
/>
|
|
{!! $errors->first('end_date', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}
|
|
</div>
|
|
<div class="col-md-5">
|
|
<label class="form-control">
|
|
<input type="checkbox" name="null_end_date" value="1">
|
|
{{ trans_choice('general.set_to_null', count($users),['selection_count' => count($users)]) }}
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
<!-- Notes -->
|
|
<div class="form-group{{ $errors->has('notes') ? ' has-error' : '' }}">
|
|
<label class="col-md-3 control-label" for="notes">{{ trans('general.notes') }}</label>
|
|
<div class="col-md-6">
|
|
<textarea class="form-control" rows="4" id="notes" name="notes" aria-label="notes"></textarea>
|
|
{!! $errors->first('notes', '<span class="alert-msg" aria-hidden="true">:message</span>') !!}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-group">
|
|
<div class=" col-md-9 col-md-offset-3">
|
|
<label class="form-control">
|
|
<input type="checkbox" name="null_notes" value="1" />
|
|
{{ trans_choice('general.set_users_field_to_null', count($users), ['field' => trans('general.notes'), 'user_count' => count($users)]) }}
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
@foreach ($users as $user)
|
|
<input type="hidden" name="ids[{{ $user->id }}]" value="{{ $user->id }}">
|
|
@endforeach
|
|
</div> <!--/.box-body-->
|
|
|
|
<div class="box-footer text-right">
|
|
<a class="btn btn-link pull-left" href="{{ URL::previous() }}">{{ trans('button.cancel') }}</a>
|
|
|
|
<button type="submit" class="btn btn-success"{{ (config('app.lock_passwords') ? ' disabled' : '') }}>
|
|
<x-icon type="checkmark" />
|
|
{{ trans('general.update') }}
|
|
</button>
|
|
|
|
</div><!-- /.box-footer -->
|
|
</div> <!--/.box.box-default-->
|
|
</form>
|
|
</div> <!--/.col-md-8-->
|
|
</div>
|
|
@stop
|