diff --git a/app/Http/Controllers/Admin/GroupController.php b/app/Http/Controllers/Admin/GroupController.php
index 6e8c3b0f..a3ad0b85 100644
--- a/app/Http/Controllers/Admin/GroupController.php
+++ b/app/Http/Controllers/Admin/GroupController.php
@@ -11,6 +11,8 @@ use Illuminate\View\View;
class GroupController extends Controller
{
+ protected array $extensions = ['jpeg', 'jpg', 'png', 'gif', 'tif', 'bmp', 'ico', 'psd', 'webp'];
+
public function index(Request $request): View
{
$groups = Group::query()->when($request->query('keywords'), function (Builder $builder, $keywords) {
@@ -21,13 +23,14 @@ class GroupController extends Controller
public function add(): View
{
- return view('admin.group.add');
+ return view('admin.group.add', ['extensions' => $this->extensions]);
}
public function edit(Request $request): View
{
$group = Group::query()->findOrFail($request->route('id'));
- return view('admin.group.edit', compact('group'));
+ $extensions = $this->extensions;
+ return view('admin.group.edit', compact('group', 'extensions'));
}
public function create(): Response
diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php
index e0e13567..ce45b923 100644
--- a/database/seeders/DatabaseSeeder.php
+++ b/database/seeders/DatabaseSeeder.php
@@ -80,7 +80,7 @@ class DatabaseSeeder extends Seeder
GroupConfigKey::LimitPerDay => 300,
GroupConfigKey::LimitPerWeek => 600,
GroupConfigKey::LimitPerMonth => 999,
- GroupConfigKey::AcceptedFileSuffixes => ['jpeg', 'png', 'gif', 'tif', 'bmp', 'ico', 'psd', 'webp'],
+ GroupConfigKey::AcceptedFileSuffixes => ['jpeg', 'jpg', 'png', 'gif', 'tif', 'bmp', 'ico', 'psd', 'webp'],
GroupConfigKey::PathNamingRule => '{Y}/{m}/{d}',
GroupConfigKey::FileNamingRule => '{uniqid}',
GroupConfigKey::CacheTtl => 2626560,
diff --git a/public/css/app.css b/public/css/app.css
index ef564a3b..b431116d 100644
--- a/public/css/app.css
+++ b/public/css/app.css
@@ -652,6 +652,10 @@ select {
bottom: 0px;
left: 0px;
}
+.inset-y-0 {
+ top: 0px;
+ bottom: 0px;
+}
.top-1 {
top: 0.25rem;
}
@@ -808,6 +812,9 @@ select {
.mb-3 {
margin-bottom: 0.75rem;
}
+.mt-5 {
+ margin-top: 1.25rem;
+}
.block {
display: block;
}
@@ -1031,6 +1038,9 @@ select {
.flex-nowrap {
flex-wrap: nowrap;
}
+.items-start {
+ align-items: flex-start;
+}
.items-center {
align-items: center;
}
@@ -1171,6 +1181,18 @@ select {
border-top-right-radius: 0.375rem;
border-bottom-right-radius: 0.375rem;
}
+.rounded-t-lg {
+ border-top-left-radius: 0.5rem;
+ border-top-right-radius: 0.5rem;
+}
+.rounded-b-lg {
+ border-bottom-right-radius: 0.5rem;
+ border-bottom-left-radius: 0.5rem;
+}
+.rounded-l-none {
+ border-top-left-radius: 0px;
+ border-bottom-left-radius: 0px;
+}
.border {
border-width: 1px;
}
@@ -1293,6 +1315,17 @@ select {
--tw-bg-opacity: 1;
background-color: rgb(55 65 81 / var(--tw-bg-opacity));
}
+.bg-transparent {
+ background-color: transparent;
+}
+.bg-indigo-600 {
+ --tw-bg-opacity: 1;
+ background-color: rgb(79 70 229 / var(--tw-bg-opacity));
+}
+.bg-red-50 {
+ --tw-bg-opacity: 1;
+ background-color: rgb(254 242 242 / var(--tw-bg-opacity));
+}
.bg-opacity-75 {
--tw-bg-opacity: 0.75;
}
@@ -1387,6 +1420,10 @@ select {
padding-top: 2.5rem;
padding-bottom: 2.5rem;
}
+.py-0 {
+ padding-top: 0px;
+ padding-bottom: 0px;
+}
.pb-6 {
padding-bottom: 1.5rem;
}
@@ -1414,6 +1451,18 @@ select {
.pb-1 {
padding-bottom: 0.25rem;
}
+.pl-7 {
+ padding-left: 1.75rem;
+}
+.pr-12 {
+ padding-right: 3rem;
+}
+.pl-2 {
+ padding-left: 0.5rem;
+}
+.pr-7 {
+ padding-right: 1.75rem;
+}
.text-left {
text-align: left;
}
@@ -1480,6 +1529,9 @@ select {
.leading-7 {
line-height: 1.75rem;
}
+.leading-6 {
+ line-height: 1.5rem;
+}
.tracking-wider {
letter-spacing: 0.05em;
}
@@ -1720,6 +1772,14 @@ select {
--tw-bg-opacity: 1;
background-color: rgb(37 99 235 / var(--tw-bg-opacity));
}
+.hover\:bg-indigo-700:hover {
+ --tw-bg-opacity: 1;
+ background-color: rgb(67 56 202 / var(--tw-bg-opacity));
+}
+.hover\:bg-gray-500:hover {
+ --tw-bg-opacity: 1;
+ background-color: rgb(107 114 128 / var(--tw-bg-opacity));
+}
.hover\:text-gray-500:hover {
--tw-text-opacity: 1;
color: rgb(107 114 128 / var(--tw-text-opacity));
@@ -1847,6 +1907,10 @@ select {
.group:hover .group-hover\:hidden {
display: none;
}
+.group:hover .group-hover\:bg-white {
+ --tw-bg-opacity: 1;
+ background-color: rgb(255 255 255 / var(--tw-bg-opacity));
+}
.dark .dark\:bg-gray-900 {
--tw-bg-opacity: 1;
background-color: rgb(17 24 39 / var(--tw-bg-opacity));
@@ -1861,6 +1925,14 @@ select {
grid-column: span 3 / span 3;
}
+ .sm\:col-span-4 {
+ grid-column: span 4 / span 4;
+ }
+
+ .sm\:col-span-6 {
+ grid-column: span 6 / span 6;
+ }
+
.sm\:-mx-6 {
margin-left: -1.5rem;
margin-right: -1.5rem;
@@ -1883,6 +1955,10 @@ select {
margin-left: 1.5rem;
}
+ .sm\:mt-0 {
+ margin-top: 0px;
+ }
+
.sm\:block {
display: block;
}
@@ -1937,6 +2013,18 @@ select {
margin-bottom: calc(0.5rem * var(--tw-space-y-reverse));
}
+ .sm\:space-x-4 > :not([hidden]) ~ :not([hidden]) {
+ --tw-space-x-reverse: 0;
+ margin-right: calc(1rem * var(--tw-space-x-reverse));
+ margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));
+ }
+
+ .sm\:space-x-2 > :not([hidden]) ~ :not([hidden]) {
+ --tw-space-x-reverse: 0;
+ margin-right: calc(0.5rem * var(--tw-space-x-reverse));
+ margin-left: calc(0.5rem * calc(1 - var(--tw-space-x-reverse)));
+ }
+
.sm\:rounded-md {
border-radius: 0.375rem;
}
@@ -1959,6 +2047,11 @@ select {
padding-right: 2.5rem;
}
+ .sm\:px-0 {
+ padding-left: 0px;
+ padding-right: 0px;
+ }
+
.sm\:pt-0 {
padding-top: 0px;
}
@@ -1981,6 +2074,14 @@ select {
}
@media (min-width: 768px) {
+ .md\:col-span-1 {
+ grid-column: span 1 / span 1;
+ }
+
+ .md\:col-span-2 {
+ grid-column: span 2 / span 2;
+ }
+
.md\:my-10 {
margin-top: 2.5rem;
margin-bottom: 2.5rem;
@@ -2018,6 +2119,10 @@ select {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
+ .md\:grid-cols-3 {
+ grid-template-columns: repeat(3, minmax(0, 1fr));
+ }
+
.md\:flex-row {
flex-direction: row;
}
@@ -2030,6 +2135,10 @@ select {
justify-content: space-between;
}
+ .md\:gap-6 {
+ gap: 1.5rem;
+ }
+
.md\:gap-x-4 {
-moz-column-gap: 1rem;
column-gap: 1rem;
@@ -2066,6 +2175,10 @@ select {
}
@media (min-width: 1024px) {
+ .lg\:col-span-2 {
+ grid-column: span 2 / span 2;
+ }
+
.lg\:-mx-8 {
margin-left: -2rem;
margin-right: -2rem;
diff --git a/resources/views/admin/group/add.blade.php b/resources/views/admin/group/add.blade.php
index 400b14e8..614fc22b 100644
--- a/resources/views/admin/group/add.blade.php
+++ b/resources/views/admin/group/add.blade.php
@@ -1,5 +1,192 @@