# Renommer le squelette ## Dupliquer nineskeletor et renommer en nineXXXX Puis effectuer les changement suivants - Renommer db/nineskeletor-create-0.sql en db/nineXXXX-create-0.sql - Modifier db/nineXXXX-create-0.sql et changer le nom de la base de données en nineXXXX - Renommer dicos/90_nineskeletor.xml en dicos/90_nineXXXX.xml - Modifier dicos/nineXXXX-nineXXXX.xml et remplacer tout les nineskeletor en nineXXXX - Renommer logrotate/nineskeletor en logrotate/nineXXXX - Modifier logrotate/nineXXXX et remplacer tout les nineskeletor en nineXXXX - Renommer postservice/90-nineskeletor en postservice/90-nineXXXX - Modifier postservice/90-nineXXXX et remplacer tout les nineskeletor en nineXXXX - Renommer pretemplate/25-nineskeletor en pretemplate/25-nineXXXX - Modifier pretemplate/25-nineXXXX et remplacer tout les nineskeletor en nineXXXX - Renommer src/nineskeletor-1.0 en src/nineXXXX-1.0 - Modifier src/nineXXXX-1.0/webpack.config.js et remplacer tout les nineskeletor en nineXXXX - Renommer sso/filtres/nineskeletor.ini en sso/filtres/nineXXXX.ini - Renommer sso/filtres/nineskeletor_apps.ini en sso/filtres/nineXXXX_apps.ini - Modifier sso/filtres/nineXXXX_apps.ini et remplacer tout les nineskeletor en nineXXXX - Renommer tmpl/nineskeletor.cron en tmpl/nineXXXX.cron - Modifier tmpl/nineXXXX.cron et remplacer tout les nineskeletor en nineXXXX - Renommer tmpl/nineskeletor-apache.conf en tmpl/nineXXXX-apache.conf - Modifier tmpl/nineXXXX-apache.conf et remplacer tout les nineskeletor en nineXXXX - Renommer tmpl/nineskeletor-db.yml en tmpl/nineXXXX-db.yml - Modifier tmpl/nineXXXX-db.yml et remplacer tout les nineskeletor en nineXXXX - Renommer tmpl/nineskeletor-env.local en tmpl/nineXXXX-env.local - Modifier tmpl/nineXXXX-env.local et remplacer tout les nineskeletor en nineXXXX - Renommer tmpl/nineskeletor-proxy.sh en tmpl/nineXXXX-proxy.sh - Modifier Makefile et remplacer tout les nineskeletor en nineXXXX - Remplacer logo public/uploads/logo/logo.png ## Compilier les asset - apt-get install npm - si proxy - npm config set proxy "http://monproxyurl:monproxyport" - npm config set https-proxy "http://monproxyurl:monproxyport" - npm install -g yarn - yarn install - yarn encore dev - yarn encore prod # Description du squelette ## Bundle - DebugBundle - DoctrineBundle - DoctrineMigrationsBundle - FOSCKEditorBundle - FOSRestBundle - FrameworkBundle - KnpSnappyBundle - MakerBundle - MonologBundle - NelmioApiDocBundle - OneupUploaderBundle - SecurityBundle - SensioFrameworkExtraBundle - SwiftmailerBundle - TetranzSelect2EntityBundle - TwigBundle - TwigExtraBundle - WebProfilerBundle - WebpackEncoreBundle - ramsey/uuid - cboden/ratchet ## Asset ### Tag app - jQuery = https://www.npmjs.com/package/jquery - jqueryui = https://www.npmjs.com/package/jqueryui - bootstrap = https://www.npmjs.com/package/bootstrap - timepicki = https://www.npmjs.com/package/timepicki - datatables.net-bs4 = https://www.npmjs.com/package/datatables.net-bs4 - fontawsome-free = https://www.npmjs.com/package/@fortawesome/fontawesome-free - bs-stepper = https://www.npmjs.com/package/bs-stepper - masonry-layout = https://www.npmjs.com/package/masonry-layout - react-slick = https://www.npmjs.com/package/react-slick - image-loaded = https://www.npmjs.com/package/image-loaded - moment = https://www.npmjs.com/package/moment - select2 = https://www.npmjs.com/package/select2 - crop-select-js = https://www.npmjs.com/package/crop-select-js - spectrum-colorpicker2 = https://www.npmjs.com/package/spectrum-colorpicker2 ### Tag fullcalendar - @fullcalendar/core = https://www.npmjs.com/package/@fullcalendar/core - @fullcalendar/interaction = https://www.npmjs.com/package/@fullcalendar/interaction - @fullcalendar/daygrid = https://www.npmjs.com/package/@fullcalendar/daygrid ### Tag dropzone - dropzone = https://www.npmjs.com/package/dropzone ## Parameters Provient du template env.local - appEnv = PROD - appSecret = valeur du fichier .key autogénéré au premier reconfigure - appWeburl = Valeur du dicos web_url - appAuth = Valeur du dicos = CAS / SQL - appAlias = En dur l'alias web - appName = Nom de l'application - appCron = En dur à true pour activer le système de cron - appMasteridentity = Valeur du dicos = Ninegate / LDAP / SQL - appMasterurl = Si appMasteridentity la valeur du dicos correspondant à l'url du Ninegate maître - appMasterkey = Si appMasteridentity la valeur du dicos correspondant à la clé d'API du Ninegate maître - databaseName = En dur le nom de la base - databaseUser = En dur le user de la base - databasePassword = Autogénéré par le reconfigure - databaseHost = Valeur du dicos pour le host de la base - appMailmethod = Valeur du dicos soit sendmail soit smtp. sendmail par défaut si exim est activé sur le serveur - appMailurl = Si smtp url calculé combinant smtphost smtpport smtpencryption smtpauthmode smtpuser smtppwd - appMailnoreply = Valeur du dicos du noreplay - ldapModel = si masteridentity à LDAP soit open soit scribe - ldapHost = Valeur dicos Host LDAP - ldapPort = Valeur dicos Port LDAP - ldapUser = Valeur dicos User LDAP - ldapPassword = Valeur dicos Password LDAP - ldapBasedn = Valeur dicos Basedn LDAP - ldapUsername = si Scribe en dur sinon valeur du dicos champs annuaire utilisé comme username - ldapFirstname = si Scribe en dur sinon valeur du dicos champs annuaire utilisé comme firstname - ldapLastname = si Scribe en dur sinon valeur du dicos champs annuaire utilisé comme lastname - ldapEmail = si Scribe en dur sinon valeur du dicos champs annuaire utilisé comme email - ldapFiltergroup = si Scribe en dur sinon valeur du dicos filtre ldap de recherche des groupes - ldapFilteruser = si Scribe en dur sinon valeur du dicos filtre ldap des groupes - ldapAdmins = Liste des admins obligatoire = Admin + valeur dicos - casHost = Valeur dicos du host SSO - casPort = Valeur dicos du Porst SSO - casPath = Valeur dicos du Path SSO - casUsername = Valeur en dur correspondant au filtre sso du username - casEmail = Valeur en dur correspondant au filtre sso du email - casLastname = Valeur en dur correspondant au filtre sso du lastname - casFirstname = Valeur en dur correspondant au filtre sso du fistname - proxyUse = Valeur dicos utiliser oui/non un proxy - proxyHost = Si oui valeurs du dicos du host proxy - proxyPort = Si oui valeurs du dicos du post proxy - sondeUse = Valeur dicos utiliser oui/non une sonde statistique - sondeUrl = Si oui url de la sonde statistique ## Sécurité 4 rôles possibles - ROLE_ADMIN - ROLE_MODO - ROLE_MASTER - ROLE_USER 4 routes protégés - /user = accèssible à ROLE_USER / ROLE_MASTER / ROLE_MODO / ROLE_ADMIN - /master = accèssible à ROLE_MASTER / ROLE_MODO / ROLE_ADMIN - /modo = = accèssible à ROLE_MODO / ROLE_ADMIN - /admin = = accèssible à ROLE_ADMIN ## Job Nineskeletor intègre un système de job. Ce système va exécuter des commandes symfony à interval régulier. De base les jobs suivants sont livrés : - app:sendMail = toutes les minutes = Execution du spool de mail en attente - app:dumpBdd = toutes les nuits à 2h00 = Dump de la base - app:purgeFile = toutes les nuits à 3h00 = Suppresion des fichiers obsolètes - app:synchroUsers = toutes les nuites à 3h00 = Synchronisation des comptes utilisateurs soit via LDAP soit via Ninegate Pour ajouter un job à la listes, modifier la commande app:initCron qui sera exécutée à chaque reconfigure ## Service - app.password.encoder = encodage password sur la methode que l'annuaire - app.upload.listener = action à réaliser sur upload via oneupload - app.upload.samename = permet d'uploader un fichier et préserver le nom de fichier via oneupload - app.ldap.service = fonction ldap - app.sendmail.transport = executuion du spool de mail via sendmail - app.mail.service = fonction envoit de mail - app.twig.extension = extention twig ## Twig ### Twig Constantes Variables globales twig reprises des parametres symfony - appAlias - appAuth - appName - appCron - appMasteridentity - sondeUse - sondeUrl ### Twig Extention App\Twig\AppExtension - filtre = urlAvatar à placer avec user.avatar afin de définir l'url complète de l'avatar du user ### Twig Template de base #### templates/base.html.twig Deux paramétres non obligatoire - useheader = permet d'afficher ou non la bannière dans la page = false par défaut - usesidebar = permet d'afficher oun non la sidebar dans la page = false par défaut - usemonocolor = afin de placer uniquement la couleur dark sur la page Block - block encorelinktags = pour déclarer des encore_link_tags spécifique à la page (encorelinktags app est intégré de base) - block localstyle = pour déclarer des propriétés css spécifique à page (Include/style.css.twig est intégré de base) - block body = le corps de la page - block encorescripttags pour déclarer des encore_script_tags spécifique à la page (encorescripttags app est intégré de base) - block localjavascript = pour déclarer du js spécifique à la page (Include/javascript.js.twig est intégré de base) #### templates/Include/style.css.twig Style de l'applicaiton en surcouche de bootstrap #### templates/Include/sidebar.html.twig La sidebar de l'application quand elle est affichée #### templates/Include/javascript.js.twig Librairie js de l'application - object a et button s'ils ont un attribut data-method et data_confirm proposeront une confirmation à l'utilisateur avant de poursuivre l'action - ModalLoad(idmodal,titre,url) = permet d'afficher en modal l'url indiqué en parametre. Par défaut on dispose de la modal #mymodal #### templates/Form/fields.htms.twig Mise en forme de champs de formulaire