parent
9e4357eb4f
commit
4df96237f3
|
@ -1,127 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Livewire;
|
||||
|
||||
use App\Http\Livewire;
|
||||
use Rappasoft\LaravelLivewireTables\DataTableComponent;
|
||||
use Rappasoft\LaravelLivewireTables\Views\Column;
|
||||
use App\Models\User;
|
||||
use App\Models\Link;
|
||||
|
||||
class UserTable extends DataTableComponent
|
||||
{
|
||||
protected $model = User::class;
|
||||
|
||||
public function configure(): void
|
||||
{
|
||||
$this->setPrimaryKey('id');
|
||||
}
|
||||
|
||||
public function columns(): array
|
||||
{
|
||||
return [
|
||||
Column::make("Id", "id")
|
||||
->sortable()
|
||||
->searchable(),
|
||||
Column::make("Name", "name")
|
||||
->sortable()
|
||||
->searchable(),
|
||||
Column::make("Email", "email")
|
||||
->sortable()
|
||||
->searchable(),
|
||||
Column::make("Littlelink name", "littlelink_name")
|
||||
->sortable()
|
||||
->searchable()
|
||||
->format(function ($value, $row, Column $column) {
|
||||
if (!$row->littlelink_name == NULL) {
|
||||
return "<a href='" . url('') . "/@" . $row->littlelink_name . "' target='_blank' class='text-info'><i class='bi bi-box-arrow-up-right'></i> " . $row->littlelink_name . " </a>";
|
||||
} else {
|
||||
return 'N/A';
|
||||
}
|
||||
})
|
||||
->html(),
|
||||
Column::make("Role", "role")
|
||||
->sortable()
|
||||
->searchable(),
|
||||
Column::make("Test", "id")
|
||||
->sortable()
|
||||
->format(function ($value, $row) {
|
||||
$linkCount = Link::where('user_id', $row->id)->count();
|
||||
return $linkCount;
|
||||
}),
|
||||
Column::make("Clicks Sum", "id")
|
||||
->sortable()
|
||||
->format(function ($value, $row) {
|
||||
$clicksSum = Link::where('user_id', $row->id)->sum('click_number');
|
||||
return $clicksSum;
|
||||
}),
|
||||
Column::make("E-mail", "email_verified_at")
|
||||
->sortable()
|
||||
->format(function ($value, $row, Column $column) {
|
||||
if (env('REGISTER_AUTH') !== 'auth') {
|
||||
if ($row->role == 'admin' && $row->email_verified_at != '') {
|
||||
return '<center>-</center>';
|
||||
} else {
|
||||
$verifyLink = route('verifyUser', [
|
||||
'verify' => '-' . $row->email_verified_at,
|
||||
'id' => $row->id
|
||||
]);
|
||||
if ($row->email_verified_at == '') {
|
||||
return '<a href="' . $verifyLink . '" class="text-danger"><span class="badge bg-danger">' . __('messages.Pending') . '</span></a>';
|
||||
} else {
|
||||
return '<a href="' . $verifyLink . '" class="text-danger"><span class="badge bg-success">' . __('messages.Verified') . '</span></a>';
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return '<center>-</center>';
|
||||
}
|
||||
return '';
|
||||
})->html(),
|
||||
Column::make("Blocked", "block")
|
||||
->sortable()
|
||||
->format(function ($value, $row, Column $column) {
|
||||
if ($row->role === 'admin' && $row->id === 1) {
|
||||
return '<center>-</center>';
|
||||
} else {
|
||||
$route = route('blockUser', ['block' => $row->block, 'id' => $row->id]);
|
||||
if ($row->block === 'yes') {
|
||||
$badge = '<span class="badge bg-danger">'.__('messages.Pending').'</span>';
|
||||
} elseif ($row->block === 'no') {
|
||||
$badge = '<span class="badge bg-success">'.__('messages.Approved').'</span>';
|
||||
}
|
||||
return "<a href=\"$route\">$badge</a>";
|
||||
}
|
||||
})
|
||||
->html(),
|
||||
Column::make("Created at", "created_at")
|
||||
->sortable()
|
||||
->format(function ($value) {
|
||||
if ($value) {
|
||||
return $value->format('d/m/y');
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
}),
|
||||
Column::make("Last seen", "updated_at")
|
||||
->sortable()
|
||||
->format(function ($value) {
|
||||
$now = now();
|
||||
$diff = $now->diff($value);
|
||||
|
||||
if ($diff->d < 1 && $diff->h < 1) {
|
||||
return 'Now';
|
||||
} elseif ($diff->d < 1 && $diff->h < 24) {
|
||||
return $diff->h . ' hours ago';
|
||||
} elseif ($diff->d < 365) {
|
||||
return $diff->d . ' days ago';
|
||||
} else {
|
||||
return $diff->y . ' years ago';
|
||||
}
|
||||
}),
|
||||
Column::make('Actions', "id")
|
||||
->format(function ($value, $row, Column $column) {
|
||||
return view('components.table-components.action', ['user' => $row]);
|
||||
}),
|
||||
];
|
||||
}
|
||||
}
|
|
@ -18,8 +18,6 @@
|
|||
"laravel/framework": "^9.52.4",
|
||||
"laravel/socialite": "^5.5",
|
||||
"laravel/tinker": "^2.5",
|
||||
"livewire/livewire": "^2.12",
|
||||
"rappasoft/laravel-livewire-tables": "^2.15",
|
||||
"spatie/laravel-backup": "^8.17"
|
||||
},
|
||||
"require-dev": {
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "b2eafc10eb774aaa9bb7ce8353b44da2",
|
||||
"content-hash": "f681cfe300acd922f41ba6210924fd7f",
|
||||
"packages": [
|
||||
{
|
||||
"name": "awssat/laravel-visits",
|
||||
|
@ -1222,21 +1222,21 @@
|
|||
},
|
||||
{
|
||||
"name": "fruitcake/php-cors",
|
||||
"version": "v1.3.0",
|
||||
"version": "v1.2.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/fruitcake/php-cors.git",
|
||||
"reference": "3d158f36e7875e2f040f37bc0573956240a5a38b"
|
||||
"reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/fruitcake/php-cors/zipball/3d158f36e7875e2f040f37bc0573956240a5a38b",
|
||||
"reference": "3d158f36e7875e2f040f37bc0573956240a5a38b",
|
||||
"url": "https://api.github.com/repos/fruitcake/php-cors/zipball/58571acbaa5f9f462c9c77e911700ac66f446d4e",
|
||||
"reference": "58571acbaa5f9f462c9c77e911700ac66f446d4e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.4|^8.0",
|
||||
"symfony/http-foundation": "^4.4|^5.4|^6|^7"
|
||||
"symfony/http-foundation": "^4.4|^5.4|^6"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpstan/phpstan": "^1.4",
|
||||
|
@ -1246,7 +1246,7 @@
|
|||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.2-dev"
|
||||
"dev-main": "1.1-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
|
@ -1277,7 +1277,7 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/fruitcake/php-cors/issues",
|
||||
"source": "https://github.com/fruitcake/php-cors/tree/v1.3.0"
|
||||
"source": "https://github.com/fruitcake/php-cors/tree/v1.2.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -1289,7 +1289,7 @@
|
|||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2023-10-12T05:21:21+00:00"
|
||||
"time": "2022-02-20T15:07:15+00:00"
|
||||
},
|
||||
{
|
||||
"name": "geo-sot/laravel-env-editor",
|
||||
|
@ -2662,16 +2662,16 @@
|
|||
},
|
||||
{
|
||||
"name": "league/mime-type-detection",
|
||||
"version": "1.14.0",
|
||||
"version": "1.13.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/thephpleague/mime-type-detection.git",
|
||||
"reference": "b6a5854368533df0295c5761a0253656a2e52d9e"
|
||||
"reference": "a6dfb1194a2946fcdc1f38219445234f65b35c96"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/b6a5854368533df0295c5761a0253656a2e52d9e",
|
||||
"reference": "b6a5854368533df0295c5761a0253656a2e52d9e",
|
||||
"url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/a6dfb1194a2946fcdc1f38219445234f65b35c96",
|
||||
"reference": "a6dfb1194a2946fcdc1f38219445234f65b35c96",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -2702,7 +2702,7 @@
|
|||
"description": "Mime-type detection for Flysystem",
|
||||
"support": {
|
||||
"issues": "https://github.com/thephpleague/mime-type-detection/issues",
|
||||
"source": "https://github.com/thephpleague/mime-type-detection/tree/1.14.0"
|
||||
"source": "https://github.com/thephpleague/mime-type-detection/tree/1.13.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -2714,7 +2714,7 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-10-17T14:13:20+00:00"
|
||||
"time": "2023-08-05T12:09:49+00:00"
|
||||
},
|
||||
{
|
||||
"name": "league/oauth1-client",
|
||||
|
@ -2962,79 +2962,6 @@
|
|||
],
|
||||
"time": "2021-06-28T04:27:21+00:00"
|
||||
},
|
||||
{
|
||||
"name": "livewire/livewire",
|
||||
"version": "v2.12.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/livewire/livewire.git",
|
||||
"reference": "7d3a57b3193299cf1a0639a3935c696f4da2cf92"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/livewire/livewire/zipball/7d3a57b3193299cf1a0639a3935c696f4da2cf92",
|
||||
"reference": "7d3a57b3193299cf1a0639a3935c696f4da2cf92",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"illuminate/database": "^7.0|^8.0|^9.0|^10.0",
|
||||
"illuminate/support": "^7.0|^8.0|^9.0|^10.0",
|
||||
"illuminate/validation": "^7.0|^8.0|^9.0|^10.0",
|
||||
"league/mime-type-detection": "^1.9",
|
||||
"php": "^7.2.5|^8.0",
|
||||
"symfony/http-kernel": "^5.0|^6.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"calebporzio/sushi": "^2.1",
|
||||
"laravel/framework": "^7.0|^8.0|^9.0|^10.0",
|
||||
"mockery/mockery": "^1.3.1",
|
||||
"orchestra/testbench": "^5.0|^6.0|^7.0|^8.0",
|
||||
"orchestra/testbench-dusk": "^5.2|^6.0|^7.0|^8.0",
|
||||
"phpunit/phpunit": "^8.4|^9.0",
|
||||
"psy/psysh": "@stable"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"laravel": {
|
||||
"providers": [
|
||||
"Livewire\\LivewireServiceProvider"
|
||||
],
|
||||
"aliases": {
|
||||
"Livewire": "Livewire\\Livewire"
|
||||
}
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"src/helpers.php"
|
||||
],
|
||||
"psr-4": {
|
||||
"Livewire\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Caleb Porzio",
|
||||
"email": "calebporzio@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "A front-end framework for Laravel.",
|
||||
"support": {
|
||||
"issues": "https://github.com/livewire/livewire/issues",
|
||||
"source": "https://github.com/livewire/livewire/tree/v2.12.6"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://github.com/livewire",
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2023-08-11T04:02:34+00:00"
|
||||
},
|
||||
{
|
||||
"name": "monolog/monolog",
|
||||
"version": "2.9.1",
|
||||
|
@ -3654,16 +3581,16 @@
|
|||
},
|
||||
{
|
||||
"name": "phpstan/phpstan",
|
||||
"version": "1.10.39",
|
||||
"version": "1.10.38",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/phpstan/phpstan.git",
|
||||
"reference": "d9dedb0413f678b4d03cbc2279a48f91592c97c4"
|
||||
"reference": "5302bb402c57f00fb3c2c015bac86e0827e4b691"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/d9dedb0413f678b4d03cbc2279a48f91592c97c4",
|
||||
"reference": "d9dedb0413f678b4d03cbc2279a48f91592c97c4",
|
||||
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/5302bb402c57f00fb3c2c015bac86e0827e4b691",
|
||||
"reference": "5302bb402c57f00fb3c2c015bac86e0827e4b691",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -3712,7 +3639,7 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-10-17T15:46:26+00:00"
|
||||
"time": "2023-10-06T14:19:14+00:00"
|
||||
},
|
||||
{
|
||||
"name": "phpstan/phpstan-phpunit",
|
||||
|
@ -4229,16 +4156,16 @@
|
|||
},
|
||||
{
|
||||
"name": "psy/psysh",
|
||||
"version": "v0.11.22",
|
||||
"version": "v0.11.21",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/bobthecow/psysh.git",
|
||||
"reference": "128fa1b608be651999ed9789c95e6e2a31b5802b"
|
||||
"reference": "bcb22101107f3bf770523b65630c9d547f60c540"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/bobthecow/psysh/zipball/128fa1b608be651999ed9789c95e6e2a31b5802b",
|
||||
"reference": "128fa1b608be651999ed9789c95e6e2a31b5802b",
|
||||
"url": "https://api.github.com/repos/bobthecow/psysh/zipball/bcb22101107f3bf770523b65630c9d547f60c540",
|
||||
"reference": "bcb22101107f3bf770523b65630c9d547f60c540",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -4267,7 +4194,7 @@
|
|||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-0.11": "0.11.x-dev"
|
||||
"dev-main": "0.11.x-dev"
|
||||
},
|
||||
"bamarni-bin": {
|
||||
"bin-links": false,
|
||||
|
@ -4303,9 +4230,9 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/bobthecow/psysh/issues",
|
||||
"source": "https://github.com/bobthecow/psysh/tree/v0.11.22"
|
||||
"source": "https://github.com/bobthecow/psysh/tree/v0.11.21"
|
||||
},
|
||||
"time": "2023-10-14T21:56:36+00:00"
|
||||
"time": "2023-09-17T21:15:54+00:00"
|
||||
},
|
||||
{
|
||||
"name": "ralouphie/getallheaders",
|
||||
|
@ -4533,78 +4460,6 @@
|
|||
],
|
||||
"time": "2023-04-15T23:01:58+00:00"
|
||||
},
|
||||
{
|
||||
"name": "rappasoft/laravel-livewire-tables",
|
||||
"version": "v2.15.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/rappasoft/laravel-livewire-tables.git",
|
||||
"reference": "26c596d4d4bb0e0efdfcd48de16071fc5ed969ef"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/rappasoft/laravel-livewire-tables/zipball/26c596d4d4bb0e0efdfcd48de16071fc5ed969ef",
|
||||
"reference": "26c596d4d4bb0e0efdfcd48de16071fc5ed969ef",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"illuminate/contracts": "^8.0|^9.0|^10.0",
|
||||
"livewire/livewire": "^2.6",
|
||||
"php": "^7.4|^8.0|^8.1|^8.2",
|
||||
"spatie/laravel-package-tools": "^1.4.3"
|
||||
},
|
||||
"require-dev": {
|
||||
"brianium/paratest": "^4.0|^5.0|^6.0|^7.0",
|
||||
"ext-sqlite3": "*",
|
||||
"nunomaduro/collision": "^4.0|^5.0|^6.0|^7.0",
|
||||
"orchestra/testbench": "^6.0|^7.0|^8.0",
|
||||
"phpunit/phpunit": "^9.0|^10.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"laravel": {
|
||||
"providers": [
|
||||
"Rappasoft\\LaravelLivewireTables\\LaravelLivewireTablesServiceProvider"
|
||||
]
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Rappasoft\\LaravelLivewireTables\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Anthony Rappa",
|
||||
"email": "rappa819@gmail.com",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "A dynamic table component for Laravel Livewire",
|
||||
"homepage": "https://github.com/rappasoft/laravel-livewire-tables",
|
||||
"keywords": [
|
||||
"datatables",
|
||||
"laravel",
|
||||
"livewire",
|
||||
"rappasoft",
|
||||
"tables"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/rappasoft/laravel-livewire-tables/issues",
|
||||
"source": "https://github.com/rappasoft/laravel-livewire-tables/tree/v2.15.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://github.com/rappasoft",
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2023-07-15T19:50:12+00:00"
|
||||
},
|
||||
{
|
||||
"name": "spatie/db-dumper",
|
||||
"version": "3.4.0",
|
||||
|
@ -8098,16 +7953,16 @@
|
|||
},
|
||||
{
|
||||
"name": "composer/pcre",
|
||||
"version": "3.1.1",
|
||||
"version": "3.1.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/composer/pcre.git",
|
||||
"reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9"
|
||||
"reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9",
|
||||
"reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9",
|
||||
"url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2",
|
||||
"reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -8149,7 +8004,7 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/composer/pcre/issues",
|
||||
"source": "https://github.com/composer/pcre/tree/3.1.1"
|
||||
"source": "https://github.com/composer/pcre/tree/3.1.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -8165,7 +8020,7 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2023-10-11T07:11:09+00:00"
|
||||
"time": "2022-11-17T09:50:14+00:00"
|
||||
},
|
||||
{
|
||||
"name": "doctrine/instantiator",
|
||||
|
@ -10504,35 +10359,35 @@
|
|||
},
|
||||
{
|
||||
"name": "spatie/flare-client-php",
|
||||
"version": "1.4.3",
|
||||
"version": "1.4.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/spatie/flare-client-php.git",
|
||||
"reference": "5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec"
|
||||
"reference": "5f2c6a7a0d2c1d90c12559dc7828fd942911a544"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/spatie/flare-client-php/zipball/5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec",
|
||||
"reference": "5db2fdd743c3ede33f2a5367d89ec1a7c9c1d1ec",
|
||||
"url": "https://api.github.com/repos/spatie/flare-client-php/zipball/5f2c6a7a0d2c1d90c12559dc7828fd942911a544",
|
||||
"reference": "5f2c6a7a0d2c1d90c12559dc7828fd942911a544",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"illuminate/pipeline": "^8.0|^9.0|^10.0|^11.0",
|
||||
"illuminate/pipeline": "^8.0|^9.0|^10.0",
|
||||
"nesbot/carbon": "^2.62.1",
|
||||
"php": "^8.0",
|
||||
"spatie/backtrace": "^1.5.2",
|
||||
"symfony/http-foundation": "^5.2|^6.0|^7.0",
|
||||
"symfony/mime": "^5.2|^6.0|^7.0",
|
||||
"symfony/process": "^5.2|^6.0|^7.0",
|
||||
"symfony/var-dumper": "^5.2|^6.0|^7.0"
|
||||
"symfony/http-foundation": "^5.0|^6.0",
|
||||
"symfony/mime": "^5.2|^6.0",
|
||||
"symfony/process": "^5.2|^6.0",
|
||||
"symfony/var-dumper": "^5.2|^6.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"dms/phpunit-arraysubset-asserts": "^0.5.0",
|
||||
"pestphp/pest": "^1.20|^2.0",
|
||||
"dms/phpunit-arraysubset-asserts": "^0.3.0",
|
||||
"pestphp/pest": "^1.20",
|
||||
"phpstan/extension-installer": "^1.1",
|
||||
"phpstan/phpstan-deprecation-rules": "^1.0",
|
||||
"phpstan/phpstan-phpunit": "^1.0",
|
||||
"spatie/phpunit-snapshot-assertions": "^4.0|^5.0"
|
||||
"spatie/phpunit-snapshot-assertions": "^4.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
|
@ -10562,7 +10417,7 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/spatie/flare-client-php/issues",
|
||||
"source": "https://github.com/spatie/flare-client-php/tree/1.4.3"
|
||||
"source": "https://github.com/spatie/flare-client-php/tree/1.4.2"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
@ -10570,20 +10425,20 @@
|
|||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2023-10-17T15:54:07+00:00"
|
||||
"time": "2023-07-28T08:07:24+00:00"
|
||||
},
|
||||
{
|
||||
"name": "spatie/ignition",
|
||||
"version": "1.11.3",
|
||||
"version": "1.11.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/spatie/ignition.git",
|
||||
"reference": "3d886de644ff7a5b42e4d27c1e1f67c8b5f00044"
|
||||
"reference": "48b23411ca4bfbc75c75dfc638b6b36159c375aa"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/spatie/ignition/zipball/3d886de644ff7a5b42e4d27c1e1f67c8b5f00044",
|
||||
"reference": "3d886de644ff7a5b42e4d27c1e1f67c8b5f00044",
|
||||
"url": "https://api.github.com/repos/spatie/ignition/zipball/48b23411ca4bfbc75c75dfc638b6b36159c375aa",
|
||||
"reference": "48b23411ca4bfbc75c75dfc638b6b36159c375aa",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
@ -10592,19 +10447,19 @@
|
|||
"php": "^8.0",
|
||||
"spatie/backtrace": "^1.5.3",
|
||||
"spatie/flare-client-php": "^1.4.0",
|
||||
"symfony/console": "^5.4|^6.0|^7.0",
|
||||
"symfony/var-dumper": "^5.4|^6.0|^7.0"
|
||||
"symfony/console": "^5.4|^6.0",
|
||||
"symfony/var-dumper": "^5.4|^6.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"illuminate/cache": "^9.52|^10.0|^11.0",
|
||||
"illuminate/cache": "^9.52",
|
||||
"mockery/mockery": "^1.4",
|
||||
"pestphp/pest": "^1.20|^2.0",
|
||||
"pestphp/pest": "^1.20",
|
||||
"phpstan/extension-installer": "^1.1",
|
||||
"phpstan/phpstan-deprecation-rules": "^1.0",
|
||||
"phpstan/phpstan-phpunit": "^1.0",
|
||||
"psr/simple-cache-implementation": "*",
|
||||
"symfony/cache": "^5.4|^6.0|^7.0",
|
||||
"symfony/process": "^5.4|^6.0|^7.0",
|
||||
"symfony/cache": "^6.0",
|
||||
"symfony/process": "^5.4|^6.0",
|
||||
"vlucas/phpdotenv": "^5.5"
|
||||
},
|
||||
"suggest": {
|
||||
|
@ -10653,7 +10508,7 @@
|
|||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2023-10-18T14:09:40+00:00"
|
||||
"time": "2023-09-19T15:29:52+00:00"
|
||||
},
|
||||
{
|
||||
"name": "spatie/laravel-ignition",
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
/**
|
||||
* Options: tailwind | bootstrap-4 | bootstrap-5.
|
||||
*/
|
||||
'theme' => 'bootstrap-5',
|
||||
];
|
|
@ -1,158 +0,0 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Class Namespace
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This value sets the root namespace for Livewire component classes in
|
||||
| your application. This value affects component auto-discovery and
|
||||
| any Livewire file helper commands, like `artisan make:livewire`.
|
||||
|
|
||||
| After changing this item, run: `php artisan livewire:discover`.
|
||||
|
|
||||
*/
|
||||
|
||||
'class_namespace' => 'App\\Http\\Livewire',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| View Path
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This value sets the path for Livewire component views. This affects
|
||||
| file manipulation helper commands like `artisan make:livewire`.
|
||||
|
|
||||
*/
|
||||
|
||||
'view_path' => resource_path('views/livewire'),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Layout
|
||||
|--------------------------------------------------------------------------
|
||||
| The default layout view that will be used when rendering a component via
|
||||
| Route::get('/some-endpoint', SomeComponent::class);. In this case the
|
||||
| the view returned by SomeComponent will be wrapped in "layouts.app"
|
||||
|
|
||||
*/
|
||||
|
||||
'layout' => 'layouts.app',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Livewire Assets URL
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This value sets the path to Livewire JavaScript assets, for cases where
|
||||
| your app's domain root is not the correct path. By default, Livewire
|
||||
| will load its JavaScript assets from the app's "relative root".
|
||||
|
|
||||
| Examples: "/assets", "myurl.com/app".
|
||||
|
|
||||
*/
|
||||
|
||||
'asset_url' => url(''),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Livewire App URL
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This value should be used if livewire assets are served from CDN.
|
||||
| Livewire will communicate with an app through this url.
|
||||
|
|
||||
| Examples: "https://my-app.com", "myurl.com/app".
|
||||
|
|
||||
*/
|
||||
|
||||
'app_url' => null,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Livewire Endpoint Middleware Group
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This value sets the middleware group that will be applied to the main
|
||||
| Livewire "message" endpoint (the endpoint that gets hit everytime
|
||||
| a Livewire component updates). It is set to "web" by default.
|
||||
|
|
||||
*/
|
||||
|
||||
'middleware_group' => 'web',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Livewire Temporary File Uploads Endpoint Configuration
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Livewire handles file uploads by storing uploads in a temporary directory
|
||||
| before the file is validated and stored permanently. All file uploads
|
||||
| are directed to a global endpoint for temporary storage. The config
|
||||
| items below are used for customizing the way the endpoint works.
|
||||
|
|
||||
*/
|
||||
|
||||
'temporary_file_upload' => [
|
||||
'disk' => null, // Example: 'local', 's3' Default: 'default'
|
||||
'rules' => null, // Example: ['file', 'mimes:png,jpg'] Default: ['required', 'file', 'max:12288'] (12MB)
|
||||
'directory' => null, // Example: 'tmp' Default 'livewire-tmp'
|
||||
'middleware' => null, // Example: 'throttle:5,1' Default: 'throttle:60,1'
|
||||
'preview_mimes' => [ // Supported file types for temporary pre-signed file URLs.
|
||||
'png', 'gif', 'bmp', 'svg', 'wav', 'mp4',
|
||||
'mov', 'avi', 'wmv', 'mp3', 'm4a',
|
||||
'jpg', 'jpeg', 'mpga', 'webp', 'wma',
|
||||
],
|
||||
'max_upload_time' => 5, // Max duration (in minutes) before an upload gets invalidated.
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Manifest File Path
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This value sets the path to the Livewire manifest file.
|
||||
| The default should work for most cases (which is
|
||||
| "<app_root>/bootstrap/cache/livewire-components.php"), but for specific
|
||||
| cases like when hosting on Laravel Vapor, it could be set to a different value.
|
||||
|
|
||||
| Example: for Laravel Vapor, it would be "/tmp/storage/bootstrap/cache/livewire-components.php".
|
||||
|
|
||||
*/
|
||||
|
||||
'manifest_path' => null,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Back Button Cache
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This value determines whether the back button cache will be used on pages
|
||||
| that contain Livewire. By disabling back button cache, it ensures that
|
||||
| the back button shows the correct state of components, instead of
|
||||
| potentially stale, cached data.
|
||||
|
|
||||
| Setting it to "false" (default) will disable back button cache.
|
||||
|
|
||||
*/
|
||||
|
||||
'back_button_cache' => false,
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Render On Redirect
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This value determines whether Livewire will render before it's redirected
|
||||
| or not. Setting it to "false" (default) will mean the render method is
|
||||
| skipped when redirecting. And "true" will mean the render method is
|
||||
| run before redirecting. Browsers bfcache can store a potentially
|
||||
| stale view if render is skipped on redirect.
|
||||
|
|
||||
*/
|
||||
|
||||
'render_on_redirect' => false,
|
||||
|
||||
];
|
|
@ -1,39 +0,0 @@
|
|||
@if($user->role == 'admin' and $user->id == 1)<center>-</center>
|
||||
@else
|
||||
<div class="flex align-items-center list-user-action">
|
||||
<a class="btn btn-sm btn-icon btn-success" data-bs-toggle="tooltip" data-bs-placement="top" data-original-title="{{__('messages.tt.All links')}}" href="{{ route('showLinksUser', $user->id ) }}" aria-label="All links" data-bs-original-title="All links">
|
||||
<span class="btn-inner">
|
||||
<svg class="icon-20" width="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="11.7669" cy="11.7666" r="8.98856" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></circle>
|
||||
<path d="M18.0186 18.4851L21.5426 22" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
</svg>
|
||||
</span>
|
||||
</a>
|
||||
<a class="btn btn-sm btn-icon btn-warning" data-bs-toggle="tooltip" data-bs-placement="top" data-original-title="{{__('messages.tt.Edit')}}" href="{{ route('editUser', $user->id ) }}" aria-label="Edit" data-bs-original-title="Edit">
|
||||
<span class="btn-inner">
|
||||
<svg class="icon-20" width="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M11.4925 2.78906H7.75349C4.67849 2.78906 2.75049 4.96606 2.75049 8.04806V16.3621C2.75049 19.4441 4.66949 21.6211 7.75349 21.6211H16.5775C19.6625 21.6211 21.5815 19.4441 21.5815 16.3621V12.3341" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.82812 10.921L16.3011 3.44799C17.2321 2.51799 18.7411 2.51799 19.6721 3.44799L20.8891 4.66499C21.8201 5.59599 21.8201 7.10599 20.8891 8.03599L13.3801 15.545C12.9731 15.952 12.4211 16.181 11.8451 16.181H8.09912L8.19312 12.401C8.20712 11.845 8.43412 11.315 8.82812 10.921Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<path d="M15.1655 4.60254L19.7315 9.16854" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
</svg>
|
||||
</span>
|
||||
</a>
|
||||
<a class="btn btn-sm btn-icon btn-primary" style="@if(!$user->adminUser && Auth::user()->id !== $user->id && $user->block !== 'yes' && ($user->email_verified_at != '' || env('REGISTER_AUTH') == 'auth')) background:#3a57e8;border-color:#3a57e8; @else background:#6c757d;border-color:#6c757d; @endif" data-bs-toggle="tooltip" data-bs-placement="top" data-original-title="{{__('messages.tt.Impersonate')}}" @if(!$user->adminUser && Auth::user()->id !== $user->id && $user->block !== 'yes' && ($user->email_verified_at != '' || env('REGISTER_AUTH') == 'auth')) href="{{ route('authAsID', $user->id ) }}" @endif aria-label="Impersonate" data-bs-original-title="Impersonate">
|
||||
<span class="btn-inner">
|
||||
<svg class="icon-20" width="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.59151 15.2068C13.2805 15.2068 16.4335 15.7658 16.4335 17.9988C16.4335 20.2318 13.3015 20.8068 9.59151 20.8068C5.90151 20.8068 2.74951 20.2528 2.74951 18.0188C2.74951 15.7848 5.88051 15.2068 9.59151 15.2068Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.59157 12.0198C7.16957 12.0198 5.20557 10.0568 5.20557 7.63476C5.20557 5.21276 7.16957 3.24976 9.59157 3.24976C12.0126 3.24976 13.9766 5.21276 13.9766 7.63476C13.9856 10.0478 12.0356 12.0108 9.62257 12.0198H9.59157Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path> <path d="M16.4829 10.8815C18.0839 10.6565 19.3169 9.28253 19.3199 7.61953C19.3199 5.98053 18.1249 4.62053 16.5579 4.36353" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path> <path d="M18.5952 14.7322C20.1462 14.9632 21.2292 15.5072 21.2292 16.6272C21.2292 17.3982 20.7192 17.8982 19.8952 18.2112" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
</svg>
|
||||
</span>
|
||||
</a>
|
||||
<a class="btn btn-sm btn-icon btn-danger confirmation" data-bs-toggle="tooltip" data-bs-placement="top" data-original-title="{{__('messages.tt.Delete')}}" href="{{ route('deleteUser', ['id' => $user->id] ) }}" aria-label="Delete" data-bs-original-title="Delete">
|
||||
<span class="btn-inner">
|
||||
<svg class="icon-20" width="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" stroke="currentColor">
|
||||
<path d="M19.3248 9.46826C19.3248 9.46826 18.7818 16.2033 18.4668 19.0403C18.3168 20.3953 17.4798 21.1893 16.1088 21.2143C13.4998 21.2613 10.8878 21.2643 8.27979 21.2093C6.96079 21.1823 6.13779 20.3783 5.99079 19.0473C5.67379 16.1853 5.13379 9.46826 5.13379 9.46826" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<path d="M20.708 6.23975H3.75" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<path d="M17.4406 6.23973C16.6556 6.23973 15.9796 5.68473 15.8256 4.91573L15.5826 3.69973C15.4326 3.13873 14.9246 2.75073 14.3456 2.75073H10.1126C9.53358 2.75073 9.02558 3.13873 8.87558 3.69973L8.63258 4.91573C8.47858 5.68473 7.80258 6.23973 7.01758 6.23973" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
</svg>
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
@endif
|
|
@ -19,7 +19,6 @@ $usrhandl = Auth::user()->littlelink_name;
|
|||
|
||||
<base href="{{url()->current()}}" />
|
||||
|
||||
@livewireStyles
|
||||
@include('layouts.analytics')
|
||||
@stack('sidebar-stylesheets')
|
||||
@include('layouts.notifications')
|
||||
|
@ -792,7 +791,7 @@ $usrhandl = Auth::user()->littlelink_name;
|
|||
<script src="{{ asset('assets/js/jquery-block-ui.js') }}"></script>
|
||||
<script src="{{ asset('assets/js/main-dashboard.js') }}"></script>
|
||||
|
||||
@livewireScripts
|
||||
|
||||
@stack('sidebar-scripts')
|
||||
|
||||
</body>
|
||||
|
|
|
@ -6,10 +6,6 @@
|
|||
|
||||
<style>#cs{cursor: pointer;}.delete{color:transparent; background-color:tomato; border-radius:5px; padding:8px 12px; cursor: pointer;}.delete:hover{color:transparent;background-color:#f13d1d;}html,body{max-width:100%;overflow-x:hidden;}.shorten{cursor:help;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px;}</style>
|
||||
|
||||
<style>
|
||||
[x-cloak] { display: none !important; }
|
||||
</style>
|
||||
|
||||
<div class="conatiner-fluid content-inner mt-n5 py-0">
|
||||
<div class="row">
|
||||
|
||||
|
@ -23,10 +19,131 @@
|
|||
<section class="text-gray-400">
|
||||
<h2 class="mb-4 card-header"><i class="bi bi-person"> {{__('messages.Manage Users')}}</i></h2>
|
||||
<div class="card-body p-0 p-md-3">
|
||||
|
||||
<form action="{{ route('searchUser') }}" method="post">
|
||||
@csrf
|
||||
<div class="row">
|
||||
<div class="col-lg-8">
|
||||
<div class="input-group mb-3">
|
||||
<input type="text" name="name" placeholder="{{__('messages.Search user')}}" class="form-control">
|
||||
<div class="input-group-append">
|
||||
<button type="submit" class="btn btn-primary"><i class="bi bi-search"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
{{__('messages.Users:')}}
|
||||
|
||||
<livewire:user-table />
|
||||
|
||||
<a href="{{ url('') }}/admin/users/all">All</a> -
|
||||
<a href="{{ url('') }}/admin/users/user">User</a> -
|
||||
<a href="{{ url('') }}/admin/users/vip">Vip</a> -
|
||||
<a href="{{ url('') }}/admin/users/admin">Admin</a>
|
||||
|
||||
<div class="row"><div class="table-responsive">
|
||||
<table id="sortable" class="table table-stripped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th id="cs" scope="col" data-sort="id" data-order="asc">{{__('messages.ID')}}</th>
|
||||
<th id="cs" scope="col" data-sort="name" data-order="asc">{{__('messages.Name')}}</th>
|
||||
<th id="cs" scope="col" data-sort="email" data-order="asc">{{__('messages.E-Mail')}}</th>
|
||||
<th id="cs" scope="col" data-sort="page" data-order="asc">{{__('messages.Page')}}</th>
|
||||
<th id="cs" scope="col" data-sort="role" data-order="asc">{{__('messages.Role')}}</th>
|
||||
<th id="cs" scope="col" data-sort="links" data-order="asc">{{__('messages.Links')}}</th>
|
||||
<th id="cs" scope="col" data-sort="clicks" data-order="asc">{{__('messages.Clicks')}}</th>
|
||||
<th id="cs" scope="col" data-sort="created" data-order="asc">{{__('messages.Created at')}}</th>
|
||||
<th id="cs" scope="col" data-sort="last" data-order="asc">{{__('messages.Last seen')}}</th>
|
||||
@if(env('REGISTER_AUTH') !== 'auth')<th id="cs" scope="col">{{__('messages.E-Mail')}}</th>@endif
|
||||
<th id="cs" scope="col" data-sort="block" data-order="asc">{{__('messages.Status')}}</th>
|
||||
<th scope="col" data-sortable="false">{{__('messages.Action')}}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach($users as $user)
|
||||
@php
|
||||
$dateFormat = __('messages.date.format');
|
||||
|
||||
$date = date($dateFormat, strtotime($user->created_at));
|
||||
if(!isset($user->created_at)){$date = __('messages.N/A');}
|
||||
|
||||
$lastSeen = $user->updated_at;
|
||||
$lastSeenDate = date($dateFormat, strtotime($lastSeen));
|
||||
$timezone = new DateTimeZone(date_default_timezone_get());
|
||||
$datetime = new DateTime($lastSeen, $timezone);
|
||||
$now = new DateTime(null, $timezone);
|
||||
$interval = $now->diff($datetime);
|
||||
$daysAgo = $interval->days." ".__('messages.days ago');
|
||||
if($interval->days == 1) $daysAgo = __('messages.1 day ago');
|
||||
if($interval->days == 0) $daysAgo = __('messages.Today');
|
||||
if ($interval->days >= 365) {
|
||||
$yearsAgo = floor($interval->days / 365);
|
||||
if ($yearsAgo == 1) {
|
||||
$daysAgo = __('messages.1 year ago');
|
||||
} else {
|
||||
$daysAgo = $yearsAgo . __('messages.years ago');
|
||||
}}
|
||||
@endphp
|
||||
<tr>
|
||||
<td data-id>{{ $user->id }}</td>
|
||||
<td class="shorten" title="{{ $user->name }}" data-name> {{ $user->name }} </td>
|
||||
<td class="shorten" title="{{ $user->email }}" data-email> {{ $user->email }} </td>
|
||||
<td class="shorten" title="{{ $user->littlelink_name }}" data-page>@if(isset($user->littlelink_name))<a href="{{ url('') }}/@<?= $user->littlelink_name ?>" target="_blank" class="text-info"><i class="bi bi-box-arrow-up-right"></i> {{ $user->littlelink_name }} </a>@else {{__('messages.N/A')}} @endif</td>
|
||||
<td data-role>{{ $user->role }}</td>
|
||||
<td data-links>{{$user->links}}</td>
|
||||
<td data-clicks>{{$user->clicks}}</td>
|
||||
<td data-created>{{$date}}</td>
|
||||
<td class="shorten" data-last title="{{ $lastSeenDate }}">{{$daysAgo}}</td>
|
||||
@if(env('REGISTER_AUTH') !== 'auth')
|
||||
<td>@if($user->role == 'admin' and $user->email_verified_at != '')<center>-</center> @else
|
||||
<a href="{{ route('verifyUser', ['verify' => '-' . $user->email_verified_at, 'id' => $user->id] ) }}" class="text-danger">@if($user->email_verified_at == '')<span class="badge bg-danger">{{__('messages.Pending')}}</span>@else<span class="badge bg-success">{{__('messages.Verified')}}</span></a>@endif</td>
|
||||
@endif
|
||||
@endif
|
||||
<td>@if($user->role == 'admin' and $user->id == 1)<center>-</center>@else<a href="{{ route('blockUser', ['block' => $user->block, 'id' => $user->id] ) }}">@if($user->block == 'yes') <span class="badge bg-danger">{{__('messages.Pending')}}</span> @elseif($user->block == 'no') <span class="badge bg-success">{{__('messages.Approved')}}</span> @endif</a>@endif</td>
|
||||
<td>
|
||||
@if($user->role == 'admin' and $user->id == 1)<center>-</center>
|
||||
@else
|
||||
<div class="flex align-items-center list-user-action">
|
||||
<a class="btn btn-sm btn-icon btn-success" data-bs-toggle="tooltip" data-bs-placement="top" data-original-title="{{__('messages.tt.All links')}}" href="{{ route('showLinksUser', $user->id ) }}" aria-label="All links" data-bs-original-title="All links">
|
||||
<span class="btn-inner">
|
||||
<svg class="icon-20" width="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<circle cx="11.7669" cy="11.7666" r="8.98856" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></circle>
|
||||
<path d="M18.0186 18.4851L21.5426 22" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
</svg>
|
||||
</span>
|
||||
</a>
|
||||
<a class="btn btn-sm btn-icon btn-warning" data-bs-toggle="tooltip" data-bs-placement="top" data-original-title="{{__('messages.tt.Edit')}}" href="{{ route('editUser', $user->id ) }}" aria-label="Edit" data-bs-original-title="Edit">
|
||||
<span class="btn-inner">
|
||||
<svg class="icon-20" width="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M11.4925 2.78906H7.75349C4.67849 2.78906 2.75049 4.96606 2.75049 8.04806V16.3621C2.75049 19.4441 4.66949 21.6211 7.75349 21.6211H16.5775C19.6625 21.6211 21.5815 19.4441 21.5815 16.3621V12.3341" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.82812 10.921L16.3011 3.44799C17.2321 2.51799 18.7411 2.51799 19.6721 3.44799L20.8891 4.66499C21.8201 5.59599 21.8201 7.10599 20.8891 8.03599L13.3801 15.545C12.9731 15.952 12.4211 16.181 11.8451 16.181H8.09912L8.19312 12.401C8.20712 11.845 8.43412 11.315 8.82812 10.921Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<path d="M15.1655 4.60254L19.7315 9.16854" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
</svg>
|
||||
</span>
|
||||
</a>
|
||||
<a class="btn btn-sm btn-icon btn-primary" style="@if(!$user->adminUser && Auth::user()->id !== $user->id && $user->block !== 'yes' && ($user->email_verified_at != '' || env('REGISTER_AUTH') == 'auth')) background:#3a57e8;border-color:#3a57e8; @else background:#6c757d;border-color:#6c757d; @endif" data-bs-toggle="tooltip" data-bs-placement="top" data-original-title="{{__('messages.tt.Impersonate')}}" @if(!$user->adminUser && Auth::user()->id !== $user->id && $user->block !== 'yes' && ($user->email_verified_at != '' || env('REGISTER_AUTH') == 'auth')) href="{{ route('authAsID', $user->id ) }}" @endif aria-label="Impersonate" data-bs-original-title="Impersonate">
|
||||
<span class="btn-inner">
|
||||
<svg class="icon-20" width="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.59151 15.2068C13.2805 15.2068 16.4335 15.7658 16.4335 17.9988C16.4335 20.2318 13.3015 20.8068 9.59151 20.8068C5.90151 20.8068 2.74951 20.2528 2.74951 18.0188C2.74951 15.7848 5.88051 15.2068 9.59151 15.2068Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.59157 12.0198C7.16957 12.0198 5.20557 10.0568 5.20557 7.63476C5.20557 5.21276 7.16957 3.24976 9.59157 3.24976C12.0126 3.24976 13.9766 5.21276 13.9766 7.63476C13.9856 10.0478 12.0356 12.0108 9.62257 12.0198H9.59157Z" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path> <path d="M16.4829 10.8815C18.0839 10.6565 19.3169 9.28253 19.3199 7.61953C19.3199 5.98053 18.1249 4.62053 16.5579 4.36353" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path> <path d="M18.5952 14.7322C20.1462 14.9632 21.2292 15.5072 21.2292 16.6272C21.2292 17.3982 20.7192 17.8982 19.8952 18.2112" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
</svg>
|
||||
</span>
|
||||
</a>
|
||||
<a class="btn btn-sm btn-icon btn-danger confirmation" data-bs-toggle="tooltip" data-bs-placement="top" data-original-title="{{__('messages.tt.Delete')}}" href="{{ route('deleteUser', ['id' => $user->id] ) }}" aria-label="Delete" data-bs-original-title="Delete">
|
||||
<span class="btn-inner">
|
||||
<svg class="icon-20" width="20" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg" stroke="currentColor">
|
||||
<path d="M19.3248 9.46826C19.3248 9.46826 18.7818 16.2033 18.4668 19.0403C18.3168 20.3953 17.4798 21.1893 16.1088 21.2143C13.4998 21.2613 10.8878 21.2643 8.27979 21.2093C6.96079 21.1823 6.13779 20.3783 5.99079 19.0473C5.67379 16.1853 5.13379 9.46826 5.13379 9.46826" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<path d="M20.708 6.23975H3.75" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
<path d="M17.4406 6.23973C16.6556 6.23973 15.9796 5.68473 15.8256 4.91573L15.5826 3.69973C15.4326 3.13873 14.9246 2.75073 14.3456 2.75073H10.1126C9.53358 2.75073 9.02558 3.13873 8.87558 3.69973L8.63258 4.91573C8.47858 5.68473 7.80258 6.23973 7.01758 6.23973" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"></path>
|
||||
</svg>
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div></div></div>
|
||||
<a href="{{ url('') }}/admin/new-user">+ {{__('messages.Add new user')}}</a>
|
||||
|
||||
<script type="text/javascript">
|
||||
|
@ -52,13 +169,53 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
@push('sidebar-styles')
|
||||
<script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js"></script>
|
||||
@endpush
|
||||
|
||||
@push('sidebar-scripts')
|
||||
<livewire:scripts />
|
||||
<script src="https://unpkg.com/@nextapps-be/livewire-sortablejs@0.1.1/dist/livewire-sortable.js"></script>
|
||||
<script>
|
||||
const getCellValue = (tr, idx) => tr.children[idx].innerText || tr.children[idx].textContent;
|
||||
|
||||
const comparer = (idx, asc) => (a, b) =>
|
||||
((v1, v2) =>
|
||||
v1 !== '' && v2 !== '' && !isNaN(v1) && !isNaN(v2) ? v1 - v2 : v1.toString().localeCompare(v2)
|
||||
)(getCellValue(asc ? a : b, idx), getCellValue(asc ? b : a, idx));
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
// Find the sortable table and its headers
|
||||
const table = document.querySelector('#sortable.table.table-stripped');
|
||||
const headers = table.querySelectorAll('th[data-sort]');
|
||||
|
||||
// Add caret icon to initial header element
|
||||
const initialHeader = table.querySelector('[data-order]');
|
||||
initialHeader.innerHTML = `${initialHeader.innerText} <i class="bi bi-caret-down-fill"></i>`;
|
||||
|
||||
// Attach click event listener to all sortable headers
|
||||
headers.forEach(th => th.addEventListener('click', function() {
|
||||
// Get the clicked header's index, sort order, and sortable attribute
|
||||
const thIndex = Array.from(th.parentNode.children).indexOf(th);
|
||||
const isAscending = this.asc = !this.asc;
|
||||
const isSortable = th.getAttribute('data-sortable') !== 'false';
|
||||
|
||||
// If the column is not sortable, do nothing
|
||||
if (!isSortable) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Remove caret icon and active class from all headers
|
||||
headers.forEach(h => {
|
||||
h.classList.remove('active');
|
||||
h.innerHTML = h.innerText;
|
||||
});
|
||||
|
||||
// Add caret icon and active class to clicked header
|
||||
th.classList.add('active');
|
||||
th.innerHTML = `${th.innerText} ${isAscending ? '<i class="bi bi-caret-down-fill"></i>' : '<i class="bi bi-caret-up-fill"></i>'}`;
|
||||
|
||||
// Sort the table rows based on the clicked header
|
||||
Array.from(table.querySelectorAll('tbody tr'))
|
||||
.sort(comparer(thIndex, isAscending))
|
||||
.forEach(tr => table.querySelector('tbody').appendChild(tr));
|
||||
}));
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
|
||||
@endsection
|
|
@ -191,7 +191,6 @@ Route::group([
|
|||
Route::get('/send-test-email', [AdminController::class, 'SendTestMail'])->name('SendTestMail');
|
||||
Route::get('/auth-as/{id}', [AdminController::class, 'authAsID'])->name('authAsID');
|
||||
Route::get('/theme-updater', function () {return view('studio/theme-updater', []);});
|
||||
Route::get('/table', function () {return view('vendor/livewire-tables/datatable', ['this' => NULL]);});
|
||||
Route::get('/update', function () {return view('update', []);});
|
||||
Route::get('/backup', function () {return view('backup', []);});
|
||||
|
||||
|
|
Loading…
Reference in New Issue