ryansusana / elepy Goto Github PK
View Code? Open in Web Editor NEWElepy, The Headless Content Management Framework
Home Page: https://docs.elepy.com
License: Apache License 2.0
Elepy, The Headless Content Management Framework
Home Page: https://docs.elepy.com
License: Apache License 2.0
Let Elypi be able to handle Lists on the Front end
@MinRank for a route or something along those lines?
Make it so that it you can restrict @hidden from config or just add a json attribute called hidden.
And then in the admin panel use the hidden attribute to hide fields in the table.
Add Bean Validation as an option to validation:
baeldung.com/javax-validation
It would be a nice feature if Elepy supported these actions:
Objects throw an error when calling get without searchfields
Support for basic authentication on admin panel filtered routes
Can't disable and enable features for deserializations
Implement a sort of UserRole/Permission system with a top role that only 1 user can have.
The base admin filter on the admin module must also work in correspondence with the User Role system.
This means that the admin panel has to be hosted on the same Service as The Elepy Instance.
Proper fix would be to pass a url too the template and using that instead.
.withHttpSevice(new VertxService())
is returning empty pages
Crud injections don't work with
@Inject
Crud<?> crud;
In the admin panel table
We need an @unique
As of now, the admin panel is not in any way Customizable, the only dynamic content are the models and routes.
The goal is to make it so that the style of the admin panel is customizable via an overridable 'default.scss' file.
RouteGenerator is a built-in handler that handles the creation of Routes.
It takes in 2 parameters, an object that implements the Crud interface and a Class(which it assumes has the Annotation @RestModel
)
The ClassValidator validates that RestModels are properly configured on startup.
This means changing the "proudly powered by Elepy" to white instead of blue.
Add a method in admin panel that allows to give a template (wrapped by the main content div) for a specific RestModel while still maintaining consistency in the layout(sidebar and navbar)
Right now all ID's must have a json property 'id' or '_id'. this should not be the case.
Admittedly, I didn't spend a ton of time scouring the docs, but I didn't see how you'd go about linking models together whether it be for something like you might want for implementing line items on an order or some sort of hierarchical categorization mechanism. Am I missing something obvious?
Would I just manually search for related models using IDs?
Elepy should support strong and weak recursion by implementing a maxDepth property to @InnerObject
Make it so that disabled routes are not 404 not found
This annotation should be used for when you want to use a Map<String, ?> in Elepy.
Sparkjava should live in its own separate module.
The reason it's not is that because Elepy needs a default implementation for things.
Find a way to make the dependency optional and auto-configurable
It seems that I can't visit the website: https://elepy.com/
Currently under development
Make all concepts/components use the elepy provided mapper.
This makes it easier to use data classes in kotlin
I have this problem when uploading files
OS: Windows 10
java.lang.IllegalArgumentException: character to be escaped is missing at java.base/java.util.regex.Matcher.appendExpandedReplacement(Matcher.java:1020) at java.base/java.util.regex.Matcher.appendReplacement(Matcher.java:998) at com.elepy.uploads.DirectoryFileService.replaceNMatches(DirectoryFileService.java:35) at com.elepy.uploads.DirectoryFileService.decodeFileName(DirectoryFileService.java:105) at com.elepy.uploads.DirectoryFileService.uploadFile(DirectoryFileService.java:52) at com.elepy.uploads.FileUploadExtension.lambda$handleUpload$1(FileUploadExtension.java:58) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:195) at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1654) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578) at com.elepy.uploads.FileUploadExtension.handleUpload(FileUploadExtension.java:62) at com.elepy.http.HttpService.lambda$addRoute$0(HttpService.java:38) at com.elepy.http.SparkService.lambda$igniteRoute$6(SparkService.java:132) at spark.RouteImpl$1.handle(RouteImpl.java:72) at spark.http.matching.Routes.execute(Routes.java:61) at spark.http.matching.MatcherFilter.doFilter(MatcherFilter.java:134) at spark.embeddedserver.jetty.JettyHandler.doHandle(JettyHandler.java:50) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1672) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) at org.eclipse.jetty.server.Server.handle(Server.java:502) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103) at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168) at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.produce(EatWhatYouKill.java:132) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:765) at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:683) at java.base/java.lang.Thread.run(Thread.java:834)
Make it so that models can be displayed with an Overview instead of going directly to edit
Provide a way to upload and query binaries to Elepy.
Let it be able to mount to a file system.
Query Delete on Admin panel as well
With properties, status, maybe a builder?
If the id field is not 'id' the adminpanel does not recognize it as the identifier
To be able to define extra actions on the CMS.
This should be done with a Repeatable annotation on a RestModel.
Actions should be batchable or single.
Actions should provide a name.
Actions should link to a RouteHandler. Maybe an ActionHandler?
@Find
@Update
@Create
@Delete
These are the only annotations that should exist. They should be ClassLevel annotations.
Each annotation should have 2 options. AccessLevel(ADMIN or PUBLIC. the default varies per route) and it's implementation of a Route class
Update:
Find:
Create:
Delete:
All of these methods (Except Find) should return boolean if the task has been successfully executed. If not a Proper RestErrorMessage should be thrown describing what happened. Find by ID should return a JSON Object. Find by query should return a Page object.
Add package names to scan rest models
Elepy is now split up into 3 repositories.
Make this one.
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.