ian-maurmann / pith-framework Goto Github PK
View Code? Open in Web Editor NEWPith Framework
License: Mozilla Public License 2.0
Pith Framework
License: Mozilla Public License 2.0
TODO: Config Object
TODO: Views
Every View:
TODO: Actions
Every Action:
Shared Infrastructure:
#19
- Add a new Shared Infrastructure Pages pack
- [x CSS using the name
shared-ui
as the prefix.- Add CSS / Javascript resources for Shared Infrastructure Pages
- Use path
/resources/vendor/common-libraries
for libs (Ex: jquery, toastr, oxcss, hola).- Use path
/resources/framework/shared-ui/
for resources for Shared-UI js / css.- Shared Infrastructure Layout
- New User page.
- User Login page.
Pith Panel
- Add a new Pith Panel Pages pack
- Pith Panel layout / theme
- CSS using the name
pith-panel
as the prefix.- Add CSS / Javascript resources for Panel
Housekeeping:
- Remove more circular refs from the App Object.
TODO: Access Control Object
Add new utility - Reserved Name Utility
Get started on basic version of the Shared UI,
Example site
TODO: Authenticator Object
TODO: Registry Object
TODO: Parameters in Rout Path
i.e.
example.com/something/1234
example.com/something/1234/something-else
or else use another library for parsing routes
Fixup:
- Add PhpDoc comments
- PhpDoc comments in PhpStorm can display pictures now. Add documentation pictures.
Refactor:
- Refactor objects to use the App Reference Trait.
Add:
- Meta Object (Internal, with framework version info, legal info.)
- Info Object
$this->app->info
(External, with methods that talk to Meta Object, but also app info, and info from the pith.json file.)Edit:
- The Info Object should be accessible from
$this->app->info
Cleanup / refactor at the end:
- Remove the Version Trait
Add:
- Add simple Constants file.
- New Config system.
Cleanup / refactor at the end:
- Remove the current Config.
- Remove the Config Profiles.
Add:
- Engine Object
$app->engine
&$this->app->engine
Engine State Machine Object(Dispatching was too interconnected for using states)Engine State Object? (Or use PHP8 enum? Or a simple string?)(n/a)Framework Startup:
- Add new startup method
$app->engine->start();
Workflow
State Machine should have methods likeenterRouting( )
,andenterDispatching( )
(n/a)Cleanup / refactor at the end:
- Remove the Startup Trait
- Remove the Run Trait
Add to Engine
- Do routing with FastRoute (Figure out how to keep our 2-level routing, and how to dynamically add/remove routes. Cache routes, to array?)
Cleanup / refactor at the end:
- Remove the current Router. --- (Router is all the new Routing implementation with FastRoute now)
Add to Engine
Add new cleaned-up Dispatcher.(Added new functions to Dispatcher)- Instead of Controller Objects with
action( )
andpreparer( )
functions, use Action Objects and Preparer Objects.Cleanup / refactor at the end:
Remove the current Dispatcher(Added new functions to Dispatcher)- Cleanup Dispatcher.
Add
- Add "PithException" exception
- Add special Monolog logging for Pith Exceptions, ex:
$e->logMysqlConnectionFailure
, for when services catch exceptions for well-known problems.Cleanup / refactor at the end:
- Remove the current Problem calls.
- Remove the Problem trait.
- Remove the Problem Handler
External
External Extendable:
- Pith Access Level
- Pith Controller
- Pith Query
External Interfaces
- Pith App Interface
- Pith Config Interface
- Pith Controller Interface
- Pith Module Interface
- Pith Router Interface
External Objects
- Pith Access Control
- Pith App
- Pith Config
- Pith Dispatcher
- Pith Request Processor
- Pith Router
External Traits
- Pith Problem Trait
- Pith Run Trait
- Pith Startup Trait
- Pith Version Trait
Internal
Internal Objects
- Pith Access Level Factory
- Pith App Helper
- Pith Problem Handler
- Pith Problem List
- Pith Request Helper
- Pith Route
- Pith State Enum
- Pith State Machine
- Pith String Utility
Internal Traits
- Pith App Reference Trait
External
About:
- Pith Meta
External Extendable:
- Pith Access Level
- Pith Action
Pith Controller- Pith Conversion
- Pith Pack
- Pith Preparer
- Pith Query
- Pith Route
- Pith Route List
- Pith View Requisition
- Pith Workflow Element
External Interfaces
Pith App InterfacePith Config InterfacePith Controller InterfacePith Module InterfacePith Router InterfaceExternal Objects
- Pith Access Control
- Pith App
- Pith Config
- Pith Converter
- Pith Database Wrapper (Moved)
- Pith Dispatcher
- Pith Engine
- Pith Exception
- Pith Info
Pith Request Processor- Pith Responder
- Pith Router
External Traits
Pith Problem TraitPith Run TraitPith Startup TraitPith Version Trait
Internal
Internal Objects
Pith Access Level Factory- Pith App Helper
- Pith Array Utility (Moved)
- Pith Database Wrapper Helper (Moved)
- Error Utility (Moved)
- Pith Escape Utility
- Pith Expression Utility
Pith Problem HandlerPith Problem ListPith Request Helper(Converted to URI Utility)Pith Route- Pith Rowset Array Utility (Moved)
Pith State EnumPith State Machine- Pith String Utility
- Pith URI Utility (From old Pith Request Helper)
Internal Traits
- Pith App Reference Trait
- Pith Get Object Class Directory Trait
Internal Workflow Access Levels
- World Access Level
Internal Workflow Elements
- Empty Action
- Empty Preparer
- Empty View Requisition
Misc. Files
- Index Front Controller
- Constants file
- Routes file
- .serve.php file
Misc. Plugins
- Command Tool
Database Wrapper(Moved)Internal Access LevelsInternal Utilities(Moved)PHTML View Adapter- PHTML View Adapter 2
- Pith-dot-json
(All Done)
(All Done)
(TODO)
TODO: App Object
(Basically fill the role of the old $pith variable in the framework from 0.1 to 0.5)
TODO: Router Object
TODO: Injectors
Every Injector:
Utility for returning reserved names: For reserved filenames, reserved usernames, reserved subdomain names, etc.
Todo: Add a database object that will fill the same role as the database object before the re-write.
TODO: Container
TODO: Access Levels
Access Level:
There will be default Access Levels, i.e. World✔, User, Admin, Dev, that 3rd-party modules/packages/libraries/plugins can default their pages to.
TODO: Routes
Every Route:
TODO: Dispatcher Object
TODO: Preparers
Every Preparer:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.