enhavo / enhavo Goto Github PK
View Code? Open in Web Editor NEWModern CMS with shop features based on fullstack symfony and sylius components
Home Page: https://www.enhavo.com/
License: MIT License
Modern CMS with shop features based on fullstack symfony and sylius components
Home Page: https://www.enhavo.com/
License: MIT License
For resolutions below 763px the change password button ends up in a bad position.
As a user i want to change my password.
Atm, only with the user list we can change password, but we should provide a quick menu to change only his own password.
We need translations for most of our components. At the beginning we just start with german and enlish language.
This translation guide may help us to organize the translation files and structure
http://obtao.com/blog/2013/06/how-to-organize-your-translations-in-symfony/
contents get lost when you are saving the article
Sortable table should be sortable using drag&drop
The class option should be injected and it should be the same as the config
enhavo_category.category.model.class
We should save additional information for each media object and add forms to edit them.
For example:
Some fields should be dynamical to allow each entity using media to define which fields to use.
When focusing an input field, pressing enter closes the dialogue
Atm the BlockFactory
can only create blocks that are hardcoded inside the BlockFactory
class. Of course we should offer a central configuration to set up the possible block types and load them dynamically inside our factory.
If you get logged out while you are in the admin, you should receive some message to log in again.
Atm the login promt appears. This is good but should give the user more feedback about what happend.
When writing a long article it is possible user gets logged out after submitting his form.
Solution would be to increase the session timeout to a minimum of 30 minutes or even better to 60 minutes.
We need a video content item, which support vimeo and youtube by just an url.
The current version of Sylius is v0.16. So we should update the SyliusResourceBundle
Reproduce it like that:
We need some cropper functionality for our media files.
To avoid structural inconsistency in translation files, a guideline should be created defining the keys to use based on where the translation will be used. Alternatively, the structure could also reflect the position in the code where the translation is used.
The current translation files should be structured accordingly, and future changes should refer to that guide.
Possible suggestions:
{entity}.{route, e.g. table/form}.{top-element}.{sub-element}.{type, e.g. label/message/error}
e.g. page.form.change_frequency.weekly.label
{entity}.{route, e.g. table/form}.{type, e.g. label/message/error}.{top-element}.{sub-element}
e.g. page.form.label.change_frequency.weekly
The left sidebar is not full accessible if the height is higher as the screen height. We need here some scrolling mechanism.
We should use bower for our asset dependencies. But as we will deploy things on environment without nodejs we should offer https://github.com/Bee-Lab/bowerphp as well.
If a file was uploaded which is no picture, we get a broken image, cause we try do display that picture.
Instead of the broken image we should show a file icon. The best would be to show different icons for the file types.
A manyToOne and oneToOne relationship should be possible to access the media file. Atm we only have manyToMany relationships. The problem is the esperanto_files
form type, cause it can only handle collection. This should be changed.
When the value is 0 the checkbox is not selected
In an opened overlay (e.g. creating a new article) there is far too much spacing between the last attribute-row and the button bar. CSS-class would be ".tabContentContainer". Is 80px. 50px should be fine though.
Check other overlays if spacing is fine (probably using the same class).
We should inject %esperanto_download.model.download%
<?php
$builder->add('download', 'entity', array(
'class' => 'esperanto\DownloadBundle\Entity\Download'
));
We need a bundle for housing data migration commands, e.g. to convert database structure changes between framework versions.
It is possible that while sending a request to the Server, the connection is getting interrupt (but the server still process that as a normal request), and we got lost data. To prevent this we can send the CSRF Token in the end, so the form is not valid and will not change the data in case of unexpected interrupt.
Tables should allow batch delete and maybe other batch actions (e.g. publish)
We don't need the dynamic routing in every project. At default it should be turned off, but it easy to turn on again.
Checkboxes-attributes are not aligned with rest of input fields. They are indented a bit.
Check the overlay for creating an article for example. you see "social media" or "public"-checkboxes are not aligned with "publication date"-input-field.
The Icons before the buttons in the create/edit overlays currently do have a way to be configured in the route, but this configuration is overridden by the default style and ignored. This should be corrected.
Sometimes it is interesting to know to next and previous news by date, so we should add new functions to the NewsRepository.
getPrevious(News $news)
getNext(News $news)
In some cases it is possible that a news has exact the same date, then we should't get in a loop by calling the chaining the next function.
At the moment we can configure our items in the config like this:
esperanto_content:
items:
youtube:
model: esperanto\ProjectBundle\Entity\Youtube
form: esperanto\ProjectBundle\Form\Type\YoutubeType
repository: esperantoProjectBundle:Youtube
template: esperantoProjectBundle:ItemType:youtube.html.twig
label: Youtube
You can see that for the form class we use a concrete class name, but we should give the user also the possibility to use the form as a service.
So this should also be possible:
esperanto_content:
items:
youtube:
model: esperanto\ProjectBundle\Entity\Youtube
form: esperanto_content_item_youtube
repository: esperantoProjectBundle:Youtube
template: esperantoProjectBundle:ItemType:youtube.html.twig
label: Youtube
At the moment, whenever the user gets a session timeout, the next request will return a login screen. This next request can be a form post or an ajax request, resulting in lost form data or failed ajax without a proper message for the user.
There should be a login popup and a saving/resending mechanism for form data for these cases.
We need some preview function for our content. It must be easy to add a preview to an existing content like Page, News or any Content which was added by the user.
For the preview function we will us the same request as we save our content. This is possible because we can reuse the FormType to produce the Entity we look for to render the content.
In an other project we realize this over the resolver. We use the request for saving and send it to the render action.
<?php
public function showAction(Request $request)
{
$news = $this->container->get('esperanto_news.news_resolver')->getNews($request);
return $this->render('tempalte', array('data' => $news));
}
The resolver decide if he use the request for an preview or for rendering the entity from db.
This could be an approach for this ticket, but it should be also possible with dynamic routing.
After we have an easy solution to add new preview functionality, it must be also add to the documentation.
If debug = true in parameters.yml, building the backend form for articles will return a 500 error page: "Notice: Undefined index: label.yes" (delivered as Ajax answer).
Traced the error to Symfony FormBuilder trying to create choices for Article field 'social_media'.
Atm there is no functionality to sort the slides.
A user should get feedback if he start ajax calls. This could just be a loading git. Also the user is not allowed to send the request again. This is important for post requests.
At the moment i just sees these actions, where we need some feedback:
If we send a message via the ContactBundle, we got atm this success message:
Nachricht erfolgreich gesendet!
This message should be configure over the enhavo.yml
. By default it should also be translated.
Currently we use our own implementation to handle sortable resources. Sylius uses the Sortable behavior extension for Doctrine2.
We should check if using the extension would be preferable, or maybe compare implementations for pros and cons to improve our implementation and find possible incompatibilities and errors.
Stylesheet and javascript should be manageable by routing.
Example:
stylesheets:
esperanto_app_style:
resource: '@esperantoAppBundle/Resource/public/css/style.css'
depends: ~
javascripts:
esperanto_app_bootstrap:
resource: '@esperantoAppBundle/Resource/public/js/bootstrap.css'
depends: jquery
We already include Behat, but no test yet.
The subject should be translatable
We want to use scss but also stay compatible to environment without ruby. So we should offer https://github.com/leafo/scssphp as well.
The FileService->addFile() function determines the files mime type by file extension. This could be solved in a symfony strategy-way allowing determination by file content or users hooking in their own strategy providers.
At the moment we have some PHPSpec Test, but we want so switch to PHPUnit, because with Behat, we already have some BDD Testing and i think PHPUnit is more powerful and well known by other developers as PHPSpec.
We need a better widget system. Sometimes we have more configurations, for some widget.
List Widget
This widget should list all entities of the collection comma separated (by default). The name for the entity should be configurated by the property parameter in the widget. This is like in the form bundle.
list:
label: group
property: groups
widget:
type: list
property: name
separator: ','
Template Widget
Like the widget we have now. Just print an Template
public:
label: public
property: public
widget:
type: template
template: AppBundle::template.html.twig
Multiple Property Widget
Show more property in on cell
firstName:
label: firstName:
property: firstName
widget:
type: multiple_property
properties:
- firstName
- lastName
separator: ','
right now there is no possibility to influence the options used for dateTimePicker (this applies to other widgets as well). it should be possible to define options in a config file (like stepMinute, the wording of the "now"-button and so on).
We have now a small testsuite, but we need more tests. There are already crud features in the behat list, but not implement yet.
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.