Backport the column icon fix from master

Signed-off-by: snipe <snipe@snipe.net>
This commit is contained in:
snipe 2020-04-24 05:55:38 -07:00
parent bea3a7b982
commit 6847a331a7
No known key found for this signature in database
GPG key ID: 10BFFDA3ED34B5AC
2 changed files with 146 additions and 85 deletions

View file

@ -2,7 +2,10 @@
namespace App\Presenters;
use Illuminate\Support\Facades\Storage;
use App\Helpers\Helper;
use App\Models\Setting;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Gate;
/**
* Class UserPresenter
@ -168,21 +171,22 @@ class UserPresenter extends Presenter
"formatter" => "usersLinkObjFormatter"
],
[
"field" => "assets_count",
"searchable" => false,
"sortable" => true,
"switchable" => true,
"title" => ' <span class="hidden-md hidden-lg">Assets</span>'
.'<span class="hidden-xs"><i class="fa fa-barcode fa-lg"></i></span>',
"visible" => true,
'field' => 'assets_count',
'searchable' => false,
'sortable' => true,
'switchable' => true,
'escape' => true,
'class' => 'css-barcode',
'title' => 'Assets',
'visible' => true,
],
[
"field" => "licenses_count",
"searchable" => false,
"sortable" => true,
"switchable" => true,
"title" => ' <span class="hidden-md hidden-lg">Licenses</span>'
.'<span class="hidden-xs"><i class="fa fa-floppy-o fa-lg"></i></span>',
'class' => 'css-license',
"title" => 'License',
"visible" => true,
],
[
@ -190,8 +194,8 @@ class UserPresenter extends Presenter
"searchable" => false,
"sortable" => true,
"switchable" => true,
"title" => ' <span class="hidden-md hidden-lg">Consumables</span>'
.'<span class="hidden-xs"><i class="fa fa-tint fa-lg"></i></span>',
'class' => 'css-consumable',
"title" => 'Consumables',
"visible" => true,
],
[
@ -199,8 +203,8 @@ class UserPresenter extends Presenter
"searchable" => false,
"sortable" => true,
"switchable" => true,
"title" => ' <span class="hidden-md hidden-lg">Accessories</span>'
.'<span class="hidden-xs"><i class="fa fa-keyboard-o fa-lg"></i></span>',
'class' => 'css-accessory',
"title" => 'Accessories',
"visible" => true,
],
[
@ -317,20 +321,16 @@ class UserPresenter extends Presenter
{
if ($this->avatar) {
return Storage::disk('public')->url('avatars/'.$this->avatar, $this->avatar);
return config('app.url').'/uploads/avatars/'.$this->avatar;
}
if ($this->email != '') {
/**
* @see https://en.gravatar.com/site/implement/images/
* Return a default [Myster Person] gravatar if the user does not have one
*/
if ((Setting::getSettings()->load_remote=='1') && ($this->email!='')) {
$gravatar = md5(strtolower(trim($this->email)));
// return "//gravatar.com/avatar/".$gravatar.'?d=mp';
return "//gravatar.com/avatar/".$gravatar;
}
// Set a fun, gender-neutral default icon when there is no email
return url('/img/default-sm.png');
// Set a fun, gender-neutral default icon
return url('/').'/img/default-sm.png';
}
@ -356,4 +356,4 @@ class UserPresenter extends Presenter
{
return '<i class="fa fa-user" aria-hidden="true"></i>';
}
}
}

View file

@ -3,28 +3,89 @@
{{-- Page title --}}
@section('title')
@if (Request::get('status')=='deleted')
{{ trans('general.deleted') }}
@else
{{ trans('general.current') }}
@endif
{{ trans('general.users') }}
@if (request('status')=='deleted')
{{ trans('general.deleted') }}
@else
{{ trans('general.current') }}
@endif
{{ trans('general.users') }}
@parent
@parent
@stop
@section('header_right')
<style>
/**
This is kind of weird, but it is necessary to prevent the column-selector code from barfing, since
any HTML used in the UserPresenter "title" attribute breaks the column selector HTML.
Instead, we use CSS to add the icon into the table header, which leaves the column selector
"title" text as-is.
See https://github.com/snipe/snipe-it/issues/7989
*/
th.css-barcode > .th-inner,
th.css-license > .th-inner,
th.css-consumable > .th-inner,
th.css-accessory > .th-inner
{
font-size: 0px;
line-height: 4!important;
text-align: left;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
th.css-barcode > .th-inner::before,
th.css-license > .th-inner::before,
th.css-consumable > .th-inner::before,
th.css-accessory > .th-inner::before
{
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: 20px;
}
th.css-barcode > .th-inner::before
{
content: "\f02a";
}
th.css-license > .th-inner::before
{
content: "\f0c7";
}
th.css-consumable > .th-inner::before
{
content: "\f043";
}
th.css-accessory > .th-inner::before
{
content: "\f11c";
}
</style>
@can('create', \App\Models\User::class)
@if ($snipeSettings->ldap_enabled == 1)
<a href="{{ route('ldap/user') }}" class="btn btn-default pull-right"><span class="fa fa-sitemap"></span> LDAP Sync</a>
@endif
<a href="{{ route('users.create') }}" class="btn btn-primary pull-right" style="margin-right: 5px;"> {{ trans('general.create') }}</a>
@if ($snipeSettings->ldap_enabled == 1)
<a href="{{ route('ldap/user') }}" class="btn btn-default pull-right"><span class="fa fa-sitemap"></span> LDAP Sync</a>
@endif
<a href="{{ route('users.create') }}" class="btn btn-primary pull-right" style="margin-right: 5px;"> {{ trans('general.create') }}</a>
@endcan
@if (Request::get('status')=='deleted')
<a class="btn btn-default pull-right" href="{{ route('users.index') }}" style="margin-right: 5px;">{{ trans('admin/users/table.show_current') }}</a>
@if (request('status')=='deleted')
<a class="btn btn-default pull-right" href="{{ route('users.index') }}" style="margin-right: 5px;">{{ trans('admin/users/table.show_current') }}</a>
@else
<a class="btn btn-default pull-right" href="{{ route('users.index', ['status' => 'deleted']) }}" style="margin-right: 5px;">{{ trans('admin/users/table.show_deleted') }}</a>
<a class="btn btn-default pull-right" href="{{ route('users.index', ['status' => 'deleted']) }}" style="margin-right: 5px;">{{ trans('admin/users/table.show_deleted') }}</a>
@endif
@can('view', \App\Models\User::class)
<a class="btn btn-default pull-right" href="{{ route('users.export') }}" style="margin-right: 5px;">Export</a>
@ -34,65 +95,65 @@
{{-- Page content --}}
@section('content')
<div class="row">
<div class="col-md-12">
<div class="box box-default">
<div class="box-body">
{{ Form::open([
'method' => 'POST',
'route' => ['users/bulkedit'],
'class' => 'form-inline',
'id' => 'bulkForm']) }}
<div class="row">
<div class="col-md-12">
<div class="box box-default">
<div class="box-body">
{{ Form::open([
'method' => 'POST',
'route' => ['users/bulkedit'],
'class' => 'form-inline',
'id' => 'bulkForm']) }}
@if (Request::get('status')!='deleted')
@can('delete', \App\Models\User::class)
<div id="toolbar">
<label for="bulk_actions" class="sr-only">Bulk Actions</label>
<select name="bulk_actions" class="form-control select2" style="width: 200px;" aria-label="bulk_actions">
<option value="delete">Bulk Checkin &amp; Delete</option>
<option value="edit">Bulk Edit</option>
<option value="bulkpasswordreset">Send Password Reset</option>
</select>
<button class="btn btn-default" id="bulkEdit" disabled>Go</button>
</div>
@endcan
@endif
@if (request('status')!='deleted')
@can('delete', \App\Models\User::class)
<div id="toolbar">
<label for="bulk_actions" class="sr-only">Bulk Actions</label>
<select name="bulk_actions" class="form-control select2" style="width: 200px;" aria-label="bulk_actions">
<option value="delete">Bulk Checkin &amp; Delete</option>
<option value="edit">Bulk Edit</option>
</select>
<button class="btn btn-default" id="bulkEdit" disabled>Go</button>
</div>
@endcan
@endif
<table
data-click-to-select="true"
data-columns="{{ \App\Presenters\UserPresenter::dataTableLayout() }}"
data-cookie-id-table="usersTable"
data-pagination="true"
data-id-table="usersTable"
data-search="true"
data-side-pagination="server"
data-show-columns="true"
data-show-export="true"
data-show-refresh="true"
data-sort-order="asc"
data-toolbar="#toolbar"
id="usersTable"
class="table table-striped snipe-table"
data-url="{{ route('api.users.index',
array('deleted'=> (Request::get('status')=='deleted') ? 'true' : 'false','company_id'=>e(Request::get('company_id')))) }}"
data-export-options='{
<table
data-click-to-select="true"
data-columns="{{ \App\Presenters\UserPresenter::dataTableLayout() }}"
data-cookie-id-table="usersTable"
data-pagination="true"
data-id-table="usersTable"
data-search="true"
data-side-pagination="server"
data-show-columns="true"
data-show-export="true"
data-show-refresh="true"
data-sort-order="asc"
data-toolbar="#toolbar"
id="usersTable"
class="table table-striped snipe-table"
data-url="{{ route('api.users.index',
array('deleted'=> (request('status')=='deleted') ? 'true' : 'false','company_id'=>e(request('company_id')))) }}"
data-export-options='{
"fileName": "export-users-{{ date('Y-m-d') }}",
"ignoreColumn": ["actions","image","change","checkbox","checkincheckout","icon"]
}'>
</table>
</table>
{{ Form::close() }}
</div><!-- /.box-body -->
</div><!-- /.box -->
</div>
</div>
{{ Form::close() }}
</div><!-- /.box-body -->
</div><!-- /.box -->
</div>
</div>
@stop
@section('moar_scripts')
@include ('partials.bootstrap-table')
@stop
@stop