Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
3e8b1b1
feat: implement plugin foundation with basic models and database schema
Sep 11, 2025
4284998
Fix styling
scottgrayson Sep 11, 2025
ab1584b
feat: add basic Filament resource for sidebar navigation
Sep 11, 2025
db00673
Merge remote changes and add Filament resource
Sep 11, 2025
b7a8644
fix: add missing imports for table actions
Sep 11, 2025
afc7382
fix: use imported action classes instead of full namespace
Sep 11, 2025
b35ba39
fix: use correct Filament 4 action imports from filament/actions
Sep 11, 2025
410ad83
feat: customize sidebar navigation
Sep 12, 2025
1d7ef03
fix: set resource slug to 'library' for clean URL
Sep 12, 2025
75c3d1a
feat: implement folder navigation and file viewing
Sep 12, 2025
e0238d5
feat: implement separate create buttons with modal forms
Sep 12, 2025
30b019b
fix: allow all file types in upload component
Sep 12, 2025
8d84ec3
fix: remove acceptedFileTypes to properly allow all file types
Sep 12, 2025
b8801ba
fix: handle file upload data correctly
Sep 12, 2025
d061f8b
fix: preserve type field during editing
Sep 12, 2025
2fa84f9
feat: implement proper edit form restrictions and move functionality
Sep 12, 2025
17bac2d
fix: completely remove type and parent fields from edit form
Sep 12, 2025
3941cad
fix: completely isolate edit form and clean up table actions
Sep 12, 2025
4c6f54a
feat: clean up table view with icons and simplified columns
Sep 12, 2025
ab3c1c4
fix: restore row click navigation and improve icon spacing
Sep 12, 2025
21fe7ca
fix: remove invalid iconSize method from TextColumn
Sep 12, 2025
25750ec
fix: implement proper icon spacing with custom HTML format
Sep 12, 2025
940fa9d
fix: use inline SVG icons instead of Blade components
Sep 12, 2025
1012e3f
revert: go back to working icon() method with proper spacing
Sep 12, 2025
7f5b7f6
feat: add custom CSS styling for library item icons
Sep 12, 2025
ea5c5c3
refactor: switch to solid icons and clean up CSS
Sep 12, 2025
cb85061
feat: improve visual distinction with mixed icon styles
Sep 12, 2025
1fee23d
feat: update table columns with defaults and optional fields
Sep 12, 2025
50f4357
refactor: update column labels and make created by/size optional
Sep 12, 2025
6b8b407
feat: make all columns customizable except name
Sep 12, 2025
8648ad7
feat: add dynamic model labels based on type
Sep 12, 2025
37f3c45
fix: implement dynamic labels at page level instead of resource level
Sep 12, 2025
88171e3
style: change create folder button color from success to primary
Sep 15, 2025
4690e4a
feat: consolidate create actions into '+ New' dropdown
Sep 15, 2025
fd6b4f6
fix: use ActionGroup instead of dropdown method for Filament 4 compat…
Sep 15, 2025
0289d0a
style: remove '+' character from action label
Sep 15, 2025
9f2125a
feat: remove file size column from available columns
Sep 15, 2025
dff2d7c
feat: add 'View Folder' action to edit and view pages
Sep 15, 2025
34682b5
feat: add breadcrumb navigation to edit and view pages
Sep 15, 2025
f3f6f95
perf: optimize navigation to prevent browser throttling
Sep 15, 2025
09dc0fe
update breadcrumbs
Sep 15, 2025
4678c2f
feat: add soft delete functionality with Filament defaults
Sep 15, 2025
33942f3
refactor: remove custom visibility logic for soft delete actions
Sep 15, 2025
efb3449
remove "move action"
Sep 15, 2025
986f2cc
handle duplicate slugs and update delete redirects
Sep 15, 2025
ebdabe0
action updates
Sep 16, 2025
36b09c4
fix: resolve CI workflow failures
Sep 16, 2025
e939a8a
Fix styling
scottgrayson Sep 16, 2025
f3db581
update test migrations
Sep 16, 2025
05910e2
fix: resolve merge conflict in TestCase.php
Sep 16, 2025
96c8ce9
cleanup
Sep 16, 2025
3bfdf5c
Fix styling
scottgrayson Sep 16, 2025
f082ea8
redirect after delete
Sep 16, 2025
16cce18
Merge branch 'feature/plugin-foundation' of https://github.com/TappNe…
Sep 16, 2025
8544d66
bump workflow actions versions
Sep 16, 2025
e3fa99e
Update CI workflows to use PHP 8.2+ and Laravel 11 for Filament 4.0 c…
Sep 16, 2025
2515e26
Fix TestCase compatibility with Orchestra Testbench 9.0
Sep 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/fix-php-code-style-issues.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:

steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
ref: ${{ github.head_ref }}

Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/phpstan.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,12 @@ jobs:
name: phpstan
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v5

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.1'
php-version: '8.2'
coverage: none

- name: Install composer dependencies
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/run-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,19 +13,19 @@ jobs:
fail-fast: true
matrix:
os: [ubuntu-latest, windows-latest]
php: [8.2, 8.1]
laravel: [10.*]
php: [8.2, 8.3]
laravel: [11.*]
stability: [prefer-lowest, prefer-stable]
include:
- laravel: 10.*
testbench: 8.*
- laravel: 11.*
testbench: 9.*
carbon: 2.*

name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.stability }} - ${{ matrix.os }}

steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v5

- name: Setup PHP
uses: shivammathur/setup-php@v2
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/update-changelog.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ jobs:

steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
ref: main

Expand Down
43 changes: 23 additions & 20 deletions composer.json
Original file line number Diff line number Diff line change
@@ -1,36 +1,39 @@
{
"name": ":vendor_slug/:package_slug",
"description": ":package_description",
"name": "tapp/filament-library",
"description": "A Google Drive-like file management system for Filament",
"keywords": [
":vendor_name",
"tapp",
"laravel",
":package_slug"
"filament",
"library",
"file-management"
],
"homepage": "https://github.com/:vendor_slug/:package_slug",
"homepage": "https://github.com/TappNetwork/Filament-Library",
"support": {
"issues": "https://github.com/:vendor_slug/:package_slug/issues",
"source": "https://github.com/:vendor_slug/:package_slug"
"issues": "https://github.com/TappNetwork/Filament-Library/issues",
"source": "https://github.com/TappNetwork/Filament-Library"
},
"license": "MIT",
"authors": [
{
"name": ":author_name",
"email": "author@domain.com",
"name": "Tapp Network",
"email": "dev@tappnetwork.com",
"role": "Developer"
}
],
"require": {
"php": "^8.1",
"filament/filament": "^3.0",
"filament/forms": "^3.0",
"filament/tables": "^3.0",
"spatie/laravel-package-tools": "^1.15.0"
"filament/filament": "^4.0",
"illuminate/contracts": "^10.0|^11.0",
"spatie/laravel-package-tools": "^1.15.0",
"spatie/laravel-medialibrary": "^11.0",
"filament/spatie-laravel-media-library-plugin": "^4.0"
},
"require-dev": {
"laravel/pint": "^1.0",
"nunomaduro/collision": "^7.9",
"nunomaduro/collision": "^8.0",
"nunomaduro/larastan": "^2.0.1",
"orchestra/testbench": "^8.0",
"orchestra/testbench": "^9.0",
"pestphp/pest": "^2.1",
"pestphp/pest-plugin-arch": "^2.0",
"pestphp/pest-plugin-laravel": "^2.0",
Expand All @@ -41,13 +44,13 @@
},
"autoload": {
"psr-4": {
"VendorName\\Skeleton\\": "src/",
"VendorName\\Skeleton\\Database\\Factories\\": "database/factories/"
"Tapp\\FilamentLibrary\\": "src/",
"Tapp\\FilamentLibrary\\Database\\Factories\\": "database/factories/"
}
},
"autoload-dev": {
"psr-4": {
"VendorName\\Skeleton\\Tests\\": "tests/"
"Tapp\\FilamentLibrary\\Tests\\": "tests/"
}
},
"scripts": {
Expand All @@ -67,10 +70,10 @@
"extra": {
"laravel": {
"providers": [
"VendorName\\Skeleton\\SkeletonServiceProvider"
"Tapp\\FilamentLibrary\\FilamentLibraryServiceProvider"
],
"aliases": {
"Skeleton": "VendorName\\Skeleton\\Facades\\Skeleton"
"FilamentLibrary": "Tapp\\FilamentLibrary\\Facades\\FilamentLibrary"
}
}
},
Expand Down
128 changes: 128 additions & 0 deletions config/filament-library.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
<?php

return [
/*
|--------------------------------------------------------------------------
| Library Configuration
|--------------------------------------------------------------------------
|
| Configuration options for the Filament Library plugin.
|
*/

/*
|--------------------------------------------------------------------------
| Maximum Nesting Depth
|--------------------------------------------------------------------------
|
| The maximum number of levels deep that folders can be nested.
| Set to null for unlimited nesting.
|
*/
'max_nesting_depth' => 5,

/*
|--------------------------------------------------------------------------
| Soft Delete Days
|--------------------------------------------------------------------------
|
| Number of days to keep soft-deleted items before permanent deletion.
| Set to null to disable automatic cleanup.
|
*/
'soft_delete_days' => 30,

/*
|--------------------------------------------------------------------------
| Table Columns
|--------------------------------------------------------------------------
|
| Configuration for which columns to show in the library table.
|
*/
'table_columns' => [
'name' => true,
'type' => true,
'size' => true,
'created_at' => true,
'updated_at' => false,
],

/*
|--------------------------------------------------------------------------
| File Operations
|--------------------------------------------------------------------------
|
| Configuration for file upload and handling.
|
*/
'file_operations' => [
'allowed_mime_types' => [
'image/*',
'application/pdf',
'text/*',
'application/msword',
'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
'application/vnd.ms-excel',
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
'application/vnd.ms-powerpoint',
'application/vnd.openxmlformats-officedocument.presentationml.presentation',
'application/zip',
'application/x-rar-compressed',
],
'max_file_size' => 50 * 1024 * 1024, // 50MB default
],

/*
|--------------------------------------------------------------------------
| Media Library Configuration
|--------------------------------------------------------------------------
|
| Configuration for Spatie Media Library integration.
| Most settings are handled by the Media Library's own configuration.
|
*/
'media_library' => [
'collection_name' => 'files',
'conversion_name' => 'thumb',
'disk' => null, // Use Media Library's default disk
],

/*
|--------------------------------------------------------------------------
| Permission Configuration
|--------------------------------------------------------------------------
|
| Configuration for permission handling and caching.
|
*/
'permissions' => [
'cache_ttl' => 3600, // 1 hour
'auto_inherit' => true, // Automatically inherit parent permissions
'cascade_on_change' => true, // Cascade permission changes to children
],

/*
|--------------------------------------------------------------------------
| User Model Configuration
|--------------------------------------------------------------------------
|
| Configuration for user model integration.
|
*/
'user_model' => \App\Models\User::class,

/*
|--------------------------------------------------------------------------
| Navigation Configuration
|--------------------------------------------------------------------------
|
| Configuration for Filament navigation integration.
|
*/
'navigation' => [
'group' => 'Library',
'icon' => 'heroicon-o-folder',
'sort' => 10,
],
];
6 changes: 0 additions & 6 deletions config/skeleton.php

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('library_items', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('slug');
$table->enum('type', ['folder', 'file']);
$table->foreignId('parent_id')->nullable()->constrained('library_items')->cascadeOnDelete();
$table->foreignId('created_by')->constrained('users');
$table->timestamps();
$table->softDeletes();

$table->index(['parent_id', 'type']);
$table->unique(['parent_id', 'slug'], 'lib_items_parent_slug_unique');
});
}

/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('library_items');
}
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('library_item_permissions', function (Blueprint $table) {
$table->id();
$table->foreignId('library_item_id')->constrained()->cascadeOnDelete();
$table->foreignId('user_id')->constrained()->cascadeOnDelete();
$table->enum('permission', ['view', 'edit']);
$table->timestamps();

$table->unique(['library_item_id', 'user_id', 'permission'], 'lib_item_perms_unique');
});
}

/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('library_item_permissions');
}
};
19 changes: 0 additions & 19 deletions database/migrations/create_skeleton_table.php.stub

This file was deleted.

Loading
Loading