ems-project / elasticms Goto Github PK
View Code? Open in Web Editor NEWElasticMS's monorepo
License: MIT License
ElasticMS's monorepo
License: MIT License
Form preview is using "dump" to show submission results. This should work without the debug bar.
Submitting the modal with an enter key press does not work.
Because the submit button is not inside the form tag, sadly but true
To be investigated how the api should evolve.
Adding a swagger would be nice for new users.
Adding rate limiting?
Discuss PEP/PDP/PAP...
https://www.yenlo.com/blog/api-policies-pap-pdp-pep-and-pip.-oh-my
The current API token system is a lightweight version that might benefit from this. (or not?)
When comparing environments, sometimes only a subset of data needs to be published. When environments are not synced, or when many maintainances are ongoing, the risk of error is growing.
Therefore we should be able to attach revisions to a release, and publish (apply) that release to an environment.
As discussed with Mathieu:
When we remove a child type from a json menu structure.
Any existing document using this type, is throwing an error.
Cause because we want to get the node which is not there anymore.
Club content type
with a multiple data link field related_players
.Player content type
with a single or multiple data link field type called club(s)
and a update referrers value related_players
related_players
will be updated.A content type called structure
for creating league nodes, which can contain club nodes, which can contain player nodes. The player node has a data link field type to the player document. When we save the structure, all changed player nodes should be updated.
A content type called player
which should contain the club based from the structure.
Image we can define a new view type: searchable
. In this view we can query for documents, normally starting from the attached contentType. And it will create new documents. This way we can merge documents and make it easy for the frontend to aggregate.
This view should be called after rebuild, reindex, recompute. And maybe also if we finalize a revision passing the revision ouuid, so that the view knows he only needs too recreate for the passed revision.
If something changed in the jsonMenuNested, instead of updating the referrer (+++revisions), we are just triggering the new view type and passing the ouuids. The view will then update the passed ouuids.
Once at night to be sure, we can just rebuild the searchable view types.
I have a field EMS\CoreBundle\Form\DataField\SelectFieldType defined with the options :
true
false
But it gets indexed as strings ("true", "false") but I want to get the real boolean values out of it in elasticsearch
And so remove class aliases from the services.yml file
When a user logs in for the first time, he should be required to change his password.
Alternatively, there should be a checkbox "user is required to change their password" on the create user form, which is checked by default.
Make the copy/paste fully javascript. Currently you get redirect to the raw view and then need to go back for pasting the copied data.
Also nice improvement: When pasting the copied data, show a modal for modifying the copied data before pasting it.
$builder->add('remove', SubmitEmsType::class, [
'attr' => [
'class' => 'btn btn-primary btn-sm ',
],
'icon' => 'fa fa-trash',
]);
$builder->add('remove', SubmitEmsType::class, [
'attr' => [
'class' => 'ems-button ems-button--primary ems-button--small',
],
'icon' => 'ems-icon-trash',
]);
Some route shoulb be defined for some role. The user should be able to login based on a user defined in a ems content type
The command "php bin/console ems:env:align preview template --force" crashes after exactly 5 minutes with the following error message:
Message: "" {"exception":"[object] (Elasticsearch\\Common\\Exceptions\\Forbidden403Exception(code: 403): at /opt/src/vendor/elasticsearch/elasticsearch/src/Elasticsearch/Connections/Connection.php:600)","command":"'ems:env:align' preview template --force --verbose","message":""} []
09:32:20 ERROR [console] Error thrown while running command "'ems:env:align' preview template --force --verbose". Message: "" ["exception" => Elasticsearch\Common\Exceptions\Forbidden403Exception^ { …},"command" => "'ems:env:align' preview template --force --verbose","message" => ""]
In Connection.php line 600: [Elasticsearch\Common\Exceptions\Forbidden403Exception (403)]
Specifying the ScrollSize and ScrollTimeout doesn't seem to make a difference.
According to some fora, this error usually relates to lack of space. The command works locally so most likely server limitations are the cause. However, we need to adapt the script to bypass these limitations (e.g. bulkSize parameter)
With that approach it will be easier to add a processor. In this bundle or somewhere else. Like a processor specific to the core or a project specific processor.
The processor will be identified with the config attribute _config_type
.
Once this refactoring done, with 3 first processors; default
, image
, zip
, a next processor could be a chained
one allowing to apply multiple config:
{
"_config_type": "chain",
"_chained": [{
"_config_type": "rotate-image",
"_rotate": 66
},{
"_config_type": "image",
"_flip_horizontal": true
}]
}
The silent publish does not work for multiplex fields
example document:
{"fr":{"title":"Title FR","structure":"{}"},"nl":{"title":"Title NL","structure":"{}"}}
They controller should support nl.structure as field_document.
src/Controller/Revision/JsonMenuNestedController.php -> silentPublish(...
$rawData = $revision->getRawData();
RecursiveMapper::mapPropertyValue($rawData, function (string $property, $v) use ($field, $updateJson) {
Suggestion improve the RecursiveMapper function so that he return the full property path.
When we define the max value of a collectionFieldType and there is no data we get a warning
Warning: count(): Parameter must be an array or an object that implements Countable
if (!empty($restrictionOptions['max']) && \count($dataField->getRawData()) > $restrictionOptions['max']) {
in vendor/elasticms/core-bundle/src/Form/DataField/CollectionFieldType.php (line 156)
When you impersonate a user using the "Switch User" button. You can go back to your own user/rights using the "Exit" button. However, it is possible to ge back in the browser history and find yourself on a page where you are your own again (without using the Exit button).
When the back button is used, and you find yourself on the page of your own user without using the "exit" button. You should either get an error and offered the option to click on "exit". Or the "exit" functionality should automatically trigger. --> Whenever using "Back" on the browser, the user token should be verified to be the one corresponding to the page we opened.
When going back to your original user via the "browser back button". You are presented the screen of your own user. However if you decide to perform an action (e.g. edit a user) you get a "access denied" error.
The "edit structure" page of any content type that has a substantial amount of fields loads slow.
Route: /content-type/structure/{id}
This is because we load 3 modals (+field, options, duplicate) for every field.
Possible solutions are to optimize the page by reusing fields, making the modals load with ajax or moving the modals to different routes. To be discussed.
Currently, for each contenttype we can define a create and edit role. However, if you only have the create role, you can create a new draft. Which redirects to the edit route, for which you do not have permissions.
So you can create empty drafts, but not fill in any details.
Can we define what should happen in this case? Is this expected behavior? Should we not split up these two permissions? Or should "create" be able to do the very first "finalize" step?
Today we have one datatransformer available for fields that are 100% numeric:
The same DataTransformer should be created for alphanumeric fields:
And this should be made extendeable so that we can add custom dataTransformers for specific custom fields.
The DB endpoint should not use Symfony by default (via config). We should be able from one backend to post into multiple databases. This would align the strategy of the DBsubmit to the strategy of our other submits.
Stop using @route annotation and move to XML route definition
The goals are :
Name | Current | Latest | Using |
---|---|---|---|
@a2lix/symfony-collection | ^0.4.0 | (Apr 2, 2020) | core.js |
ace-builds | ^1.4.12 | (Jul 6, 2020) | core.js |
admin-lte | 2.4.18 | 3.1.0 | core.js |
bootstrap-fileinput | 4.5.3 | 5.2.6 | core.js |
bootstrap-sass | 3.4.1 | app.scss | |
bootstrap-select | ^1.13.18 | core.js | |
ckeditor4 | 4.16.0 | 4.16.2 | core.js |
crypto-js | 3.3.0 | 4.1.1 | core.js |
datepicker | ^0.0.0 | ?? | |
daterangepicker | 3.1.0 | 3.1.0 (Jul 31, 2020) | core.js |
eonasdan-bootstrap-datetimepicker | 4.17.49 | (Feb 28, 2017) | core.js |
fullcalendar | 3.10.2 | 5.9.0 | core.js (2x) |
icheck | 1.0.2 | 1.0.3 | core.js |
jquery-lazyload | ^1.9.7 | (Mar 26, 2016) | core.js |
jquery-match-height | ^0.7.2 | (Aug 24, 2018) | core.js |
jquery-ui | ^1.12.1 | core.js | |
moment | ^2.29.1 | (Oct 6, 2020) | core.js (2x) |
nestedSortable | ^1.3.4 (Apr 28, 2011) | 2.0.0 (Mar 31, 2016) | core.js |
select2 | 4.0.13 | 4.1.0-rc.0 | core.js |
sortablejs | ^1.14.0 | ||
uuid | 3.4.0 | 8.3.2 |
Name | Current | Latest | Using |
---|---|---|---|
bootstrap | ^3.4 | core.js | |
bootstrap-colorpicker | ^2.5.3 | 3.4.0 (Aug 19) | core.js |
bootstrap-datepicker | ^1.8 | 1.9.0 (May 20, 2019) | core.js |
bootstrap-daterangepicker | ^2.1.25 | 3.1 (May 24, 2020) | Commented in core.js |
9.10.0 | core.js | ||
chart.js | ^1 | 3.5.1 (Aug 18) | core.js |
ckeditor4 | ^4.11.2 | already core.js | |
datatables.net | ^1.10.19 | 1.11.3 | core.js |
datatables.net-bs | ^1.10.19 | 1.11.3 | core.js |
fastclick | ^1.0.6 | (Jan 26, 2015) | core.js |
flot | ^0.8.3 | 4.2.2 | core.js |
font-awesome | ^4.7 | app.scss | |
fullcalendar | ^3.10 | already core.js | |
inputmask | ^3.3.7 | 5.0.6 | core.js |
ion-rangeslider | ^2.3 | (Dec 19, 2019) | core.js |
3.0.0 | 5.5.3 (Aug 3) | app.scss | |
jquery | 3.5.1 | 3.6.0 | core.js (2x) |
jquery-knob | ^1.2.11 | 1.2.13 (Dec 16, 2015) | core.js |
jquery-sparkline | ^2.4 | (Sep 14, 2013) | core.js |
jquery-ui | ^1.12.1 | already core.js | |
jvectormap | ^1.2.2 | 2.0.5 (Jan 19, 2020) | core.js |
moment | ^2.24 | already core.js | |
^0.5 | (Sep 13, 2016) | ||
0.0.4 | (Aug 24, 2012) | core.js | |
^2.2.7 | core.js | ||
select2 | ^4.0.3 | already core.js | |
^0.9.1 | (May 16, 2014) | core.js |
Name | Current | Latest | Using |
---|---|---|---|
@babel/core | 7.14.2 | 7.15.5 | |
@babel/polyfill | ^7.12.1 | ||
@babel/preset-env | 7.14.2 | 7.15.6 | |
@babel/register | 7.13.16 | 7.15.3 | |
babel-loader | ^8.2.2 | ||
bootstrap-timepicker | ^0.5.2 | (Jan 4, 2016) | |
chokidar | ^3.5.2 | ||
copy-webpack-plugin | 5.1.2 | 9.0.1 | |
css-loader | 1.0.1 | 6.3.0 | |
file-loader | 2.0.0 | 6.2.0 | |
less | 3.13.1 | 4.1.1 | |
less-loader | 4.1.0 | 10.0.1 | |
mini-css-extract-plugin | 0.4.5 | 2.3.0 | |
node-sass | 4.14.1 | 6.0.1 | |
postcss-loader | 3.0.0 | 6.1.1 | |
sass-loader | 7.3.1 | 12.1.0 | |
style-loader | 0.23.1 | 3.3.0 | |
url-loader | 1.1.2 | 4.1.1 | |
webpack | 4.46.0 | 5.54.0 | |
webpack-cli | 3.3.12 | 4.8.0 |
Just like the datatables the JsonMenuNested should use the asset saveConfig, for preventing that url's and post data get's to big.
Config & defaultData parameter.
Static applications might reference pages on websites generated by the ClientHelperBundle. However, the title of a page determines the URL, so the URL changes on every title update.
This requires a deployement to fix these static applications.
Generate permalinks for every page that uses dynamic slugs for access.
We could make it possible to access a page through its technical details, for example:
/_locale/permalink/<content_type_name>/<_ouiid>
Suggestion (keep version):
When we create a new version we now create a new revision with a new ouuid. We should keep the ouuid and give the pervious version a new ouuid. This solves the following issue:
Switching the ouuid or changing the ouuid on the previous version, we should update offcourse all revisions of that version (silent publications)
See PR ems-project/EMSFormBundle#210 for more information.
To be non breaking, a "ChoiceWithDuplicateValues" or something alike should be created, and the values should be explicitly set by us when configuring the choices.
The EMSCO_PUBLIC_KEY is not used in any service, we are just looking at the private key.
We should also make a seperate SigningService and remove logic from DataService
For the documentation:
EMSCO_PUBLIC_KEY
(mandatory): Path to a public key. The public key file needs to be in OpenSSH's format. It should look something like: ssh-rsa AAAAB3NzaC1yc2EAAA....NX6sqSnHA8= rsa-key-20121110
EMSCO_PRIVATE_KEY
(mandatory): Path to a private key.For Mistatis, after import via Logstash, it is necessary to point the Alias to the new index via an action in the CMS.
We should think about a way to log information when is_bool returns false. That would make it easier for debugging of custom expressions written in the backend of our forms.
For example: creation of an expressionLanguageService that covers the try/catch block, and adds logging in the case that an expression does not evaluate to a boolean.
Example:
"orejime-v1.2.3.js.twig" => ["orejime", "v", "1", "1.2", "1.2.3", "js", "twig"]
Right now it's impossible because Standard analyzer cannot split words by dots, and simple analyzer filters out the numbers.
Maybe we should look at the pattern tokenizer? https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-pattern-tokenizer.html
We should add a new role for allowing switch users
Should be fixed, but we should rethink how we handle error messages (translations in submission)
Related to:
In the searchDocuments function yields an array of documents at each scroll instead of one document at the time.
Originally posted by @theus77 in ems-project/EMSCoreBundle#595 (comment)
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.