Documentation
¶
Overview ¶
Package fileadmin provides a standalone file admin interface following the folder-per-controller pattern. Each controller is in its own subfolder and handles its own views and AJAX data.
This module is modeled on github.com/dracory/shopadmin, github.com/dracory/blogadmin, and github.com/dracory/logadmin.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( // ErrStorageRequired is returned when Storage is not provided ErrStorageRequired = errors.New("storage is required") )
Common errors
Functions ¶
This section is empty.
Types ¶
type AdminInterface ¶
type AdminInterface interface {
Handle(w http.ResponseWriter, r *http.Request)
}
AdminInterface defines the interface for the file admin
func New ¶
func New(opts AdminOptions) (AdminInterface, error)
New creates a new file admin instance. Returns ErrStorageRequired if Storage is nil.
type AdminOptions ¶
type AdminOptions struct {
// Storage is the filesystem.StorageInterface (required)
Storage filesystem.StorageInterface
// RootDirPath is the root directory for file operations (required).
// Typically derived from the host project's media root config.
// e.g. "/uploads"
RootDirPath string
// FuncLayout is an optional function to render the admin interface
// inside your own layout (branding, menus, etc.). It receives the
// request and response writer so the host project can access request
// context (auth user, locale, etc.) when rendering the layout.
FuncLayout func(w http.ResponseWriter, r *http.Request, title string, body string, options struct {
Styles []string
StyleURLs []string
Scripts []string
ScriptURLs []string
}) string
// AdminHomeURL is the URL for the admin home page (default: "/admin")
AdminHomeURL string
// FileAdminURL is the base URL for file admin (default: "/admin/file-manager")
FileAdminURL string
// AuthUserID returns the authenticated user ID from the request.
// If it returns "", the user is treated as unauthenticated.
AuthUserID func(r *http.Request) string
}
AdminOptions contains all dependencies and configuration for the file admin.
Storage and RootDirPath replace the in-repo version's Registry field (which was app.AppInterface). This matches the shopadmin/blogadmin/logadmin convention where dependencies are passed directly.
FuncLayout is an optional function to render the admin interface inside your own layout (branding, menus, etc.). It receives the request and response writer so the host project can access request context (auth user, locale, etc.) when rendering the layout. If nil, a default bare-bones HTML page is used (Bootstrap + Vue CDN). Uses anonymous struct to match shopadmin/blogadmin/logadmin exactly, so consumers can reuse their existing layout function for fileadmin.