base theme
https://github.com/gurayyarar/AdminBSBMaterialDesign
optimisations
pas de is_null() mais === null
pas de isset($a) mais $a ?? $b
pas de backslash avant DateTime ou DateInterval mais bien les importer (use statement)
concatenation: double quotes comme ceci: "il y a une $a variable" "je suis con{$act}caténée"
éviter les switch cases
backslash avant les fonctions: in_array, count, strlen, strval, gettype, get_class, call_user_func, array_slice, is_{type} (is_int, is_array, ...)
filtres de datatables
select2 's
entités traduites
// comment gérer string ou array pour un argument de méthode
if (!\is_array($topics) && !\is_string($topics)) {
throw new \InvalidArgumentException('$topics must be an array of strings or a string');
}
$this->topics = (array) $topics;
// commennt optimiser les process batch
$batchSize = 20;
for ($i = 1; $i <= 10000; ++$i) {
$user = new CmsUser;
$user->setStatus('user');
$user->setUsername('user' . $i);
$user->setName('Mr.Smith-' . $i);
$em->persist($user);
if (($i % $batchSize) === 0) {
$em->flush();
$em->clear(); // Detaches all objects from Doctrine!
}
}
$em->flush(); //Persist objects that did not make up an entire batch
$em->clear();
bugs
js require et imports de quelques scripts (voir script-loader ????)
URGENT
TESTER HELP ET ALERT AVEC TOUS LES TYPES D'INPUTS
impersonate locale sticky
public function onSwitchUser(SwitchUserEvent $event)
{
$request = $event->getRequest();
if ($request->hasSession() && ($session = $request->getSession())) {
$session->set(
'_locale',
// assuming your User has some getLocale() method
$event->getTargetUser()->getLocale()
);
}
}
public static function getSubscribedEvents()
{
return [
// constant for security.switch_user
SecurityEvents::SWITCH_USER => 'onSwitchUser',
];
}
CORRECTION
ne pas envoyer de mail si user != enabled
ne pas envoyer de mail à super-admin@devinthehood ?
dossier src/Twig
arreter de faire plusieurs calls sur la meme page dans les functions twig => listener avec twig globales
install php7.4 sur serveur (après SNAPSHOT)
https://github.com/github-changelog-generator/github-changelog-generator
revoir code pour php7.4
sprintf %d quand nombres
typing class properties
short fn naming
et noter dans requirements etc
backup-bundle
https://github.com/kbond/ZenstruckBackupBundle
inspirations de JL
faire + d'interfaces
embed fichiers twig pour remplacer include et extends
builderhelper like
layoutselectorhandler like
utilisateurs
colonne avec switch disabled
colonne groups
action activer/désactiver
password strength plugin
mercure
JWT_KEY: 49B96A75FE1F1563338574AD13DFB
JWT_TOKEN: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJtZXJjdXJlIjp7InB1Ymxpc2giOlsiKiJdfX0.mzTdGM7BOUvL_suqwh8ibm-v5rprhDYyEZ5GahJF1o4
JWT_KEY='49B96A75FE1F1563338574AD13DFB' ADDR='localhost:3000' ALLOW_ANONYMOUS=1 CORS_ALLOWED_ORIGINS=* ./mercure/macos/mercure
ne pas prendre mercure en dure
fix sur prod (urls :3000?)
incrémenter les vignettes de nombre d'entités
notifs en haut de page pour les users !createdBy avec lien vers la vue de l'item (vue de l item set notif as read)
https://symfony.com/blog/symfony-gets-real-time-push-capabilities
versions vulnerabilities et php upgrades
REVOIR MOCK tests CA NEE VA PAS, a part test fonctionnel, revoir factory, ...
voir TEST.md
translate et maintenance
usercontroller impersonate action (chaque cas du voter)
services
https://symfony.com/doc/current/testing.html
mockery mock??
bugs form js: range validator google.recaptcha datetimepicker wysiwyg IE11 ...
tuto bienvenue
fonctionalité
https://clu3.github.io/bootstro.js/index.html#
http://fortesinformatica.github.io/Sideshow/example.html
datatables
https://php.developpez.com/actu/84373/Exemple-simple-pour-integrer-dataTable-avec-symfony2-par-phpiste/
https://github.com/stwe/DtBundleDemo10/blob/master/src/AppBundle/Controller/EntityAController.php
blockui sur la table avec couleur de fond pendant chaque appel ajax (implémenté, à vérifier)
filtering and url and data-ajax
voir options datatable-bundle
tester cas pourris: concat, abstarcttable, count, ...
navigation couleur
hide search input si aucun champ searchable
events not fired (exemple: refresh apres data-confirm success)
page_length default dans les parameters à gérer
not-sortable not-searchable (attention sort by convert to lower)
formats de cellules (money, localizeddate, email, phone, image, ...)
highlight
colreorder
export col to exclude (action)
row-checkbox
actions multiples
attention: flush et clear entitymanager tous les 20 items
https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/batch-processing.html
row-select
Valider code
crud adaptations:
demander prefix de routes (/admin par défaut)
adapter dossier templates/crud
ecrire des tests
faire monter le coverage au maximum (voir commandes hook_local.sh)
liip imagine
upload images (logo, background, avatar) et fichiers
upload images (plugin) dans wysiwyg avec voter (pas dans edit in place mais bien dans wysiwyg)
option form par ajax | voir doc bonnes pratiques ajax symfony
https://symfonycasts.com/screencast/javascript/api-endpoint-post#play
https://codepen.io/mbezhanov/pen/japOaJ
https://stackoverflow.com/questions/30655649/sweet-alert-with-form-js-3-input
https://github.com/sweetalert2/sweetalert2/issues/412
autres types: + leur validation + leurs traductions
spinners (voir theme)
selects et select2
collection
multiselect
tags inputs
traduire en EN et virer DE
refaire une migration unique
vérifier documentation
cron
relaunch fixtures hourly
clear outdated sessions daily
dequeue messages 15 minutes
séparer en bundles
aucune librairie externe dans le composer json
"require": {
"NAMESPACE/address-bundle": "^2.0",
"NAMESPACE/admin-provider-audit-bridge-bundle": "^1.0",
"NAMESPACE/datatable-date-bridge-bundle": "^1.0",
"NAMESPACE/excel-bundle": "^1.0",
"NAMESPACE/hierarchy-handler-bundle": "^1.0",
"NAMESPACE/pdf-bundle": "^1.0",
"NAMESPACE/symfony-dependencies": "^1.0",
"NAMESPACE/user-provider-audit-bridge-bundle": "^1.0",
"NAMESPACE/zip-bundle": "^1.0"
},
bridges, providers, interfacer un maximum l'utilisation des librairies externes
systeme de notification equivalent websocket (liste header + page de notifs et badges)
https://symfony.com/blog/symfony-gets-real-time-push-capabilities
lexik translation bundle
page / form d ajout de traduction
tests phpunit
!! important réécrire la partie JS Angular
javascript edit in place (utiliser route de l interface de trads ??)
ckeditor-inline deja installé
attention aux balises p
progressive web app:
new version banner toastr
https://medium.com/progressive-web-apps/pwa-create-a-new-update-available-notification-using-service-workers-18be9168d717
https://github.com/iamshaunjp/pwa-tutorial
tools d admin:
params globaux
default left menu background picture
backup db et fichiers (!! mysql !== pgsql)
activation des options pour les users
(notifications temps réel)
react + instantsearch
https://github.com/appbaseio/reactivesearch