Aller au contenu
Support de Zwii

mickaelgutt

Membres
  • Compteur de contenus

    151
  • Inscription

  • Dernière visite

Réputation sur la communauté

35 Excellent

À propos de mickaelgutt

  • Rang
    Habitué

Visiteurs récents du profil

Le bloc de visiteurs récents est désactivé et il n’est pas visible pour les autres utilisateurs.

  1. Bonjour @Rebu, Pour zwii c'est ce qu'il te faut pour la présentation de ton entreprise ou microentreprise. Par contre pour la gestion de ton entreprise, je ne sais pas qui s'en occupe, mais une chose que je pense c'est qu'il y as des logiciels ERP qui font le taf. il y en a également des gratuits pour les auto-entrepreneurs ou micro-entreprise comme ( free-devis-factures ) je connais des personne qui l'utilise est ils en sont très contents. Je pense ( mais c'est un avis personnel ) qu'il est mieux d'avoir son site web indépendant de sa gestion d'entreprise. Pour ton mécano, j'ai toujours vu un mécano ( attention qui intervienne à domicile ou en route donc hors garage d'entreprise ) remplir un livret à souche pour la facturation, et il est bien obligé de rendre compte des pièces qu'il a changé et du temps passé à travailler et je pense fortement que ça fait parti de ça charge de travail, il ne peut pas réparer et partir de chez le client sans document . Enfin ceci est un autre débat !! Mais pour moi il faut séparer les deux activités, le site web d'un coté et la gestion d'entreprise de l'autre . Allez bon courage !! Bonne journée Cordialement Mickael
  2. Bonjour @Rebu, Alors oui, on peut faire plein de chose avec zwii à condition de faire des demandes de module et qu'une personne veuille bien si intéresser. Je ne suis pas expert ( même très loin !! ) en toutes versions de zwii car il évolue vite - pour la gestion de contacts il faudrait plus d'infos car c'est tout à fais possible mais ça nécessite la création de module bien spécifique, (les infos que tu as besoins pour tes contactes ! ), - pour la gestion commercial , là je ne sais pas du tout, car il faudrait donner plus d'infos sur les besoins d'une gestion commercial - un contact en client c'est possible avec une identifiant par contact ( plus les infos ) et par exemple : un sélecteur ou champ à cocher afin d'avoir une valeur true ou false pour valider le contact en client. - pour le règlement et la mini compta je pense que ça concerne la gestion commercial, donc je ne sais pas . alors ici il y as un module agenda qui est très bien fais mais pour les questions d'utilisation, il faudrait le télécharger et voir avec tes besoins si il conviendrais. En faite dès l'instant ou tu as une idée et que l'on peut la mettre en pratique sur papier ( un cahier des charges ) tout est faisable, mais attention pour moi zwii reste un cms pour faire un site simple ou vitrine et même plus complexe, également un blog, photos ect ... mais ne pas confondre avec un ERP !!! on peut faire des modules mais il faut du temps et la personne qui veuille bien le faire . Pour sqlite ou mysql se sont des systèmes de gestion de bases de données , il faut comprendre que zwii travail avec une base de données le : FlatFile qui est le JSON ( Une base de données orientée texte est un modèle de base de données sous la forme d'un fichier ), donc que tu utilises sqlite ,Mysql, FlatFile tu auras une gestion de données avec une structure différente. Mais pour ton projet de gestion commercial peut importe le type de gestion de base de données l'important c'est le codage qui feras tourner ta gestion commercial, la base de données servira uniquement à stocker les données. ( je sais pas si je suis claire ). Il y a, ici, sur le forum des personnes bien plus compétente que moi, aussi bien sur le codage que sur ton projet. Donc il faudrait d'autre avis que le mien sur le sujet, mais quoi qu'il en soit : 1 - ton projet demande beaucoup d'expérimentation sur la gestion commercial. 2 - du temp. 3 - beaucoup de boulot !!!! bonne journée et bon courage Cordialement Mickael
  3. bonjour @Rebu, alors voici le résultat : Pour obtenir ceci : 1 - tu vas dans la parti admin => en haut de la barre noire à droite => tu clique sur les roues 2 - tu cliques sur Avancée 3 - tu descends tout en bas il y a deux bouton 3.1 - script dans le head tu colles : <link rel="stylesheet" href="https://unpkg.com/leaflet@1.3.1/dist/leaflet.css" integrity="sha512-Rksm5RenBEKSKFjgI3a41vrjkw4EVPlJ3+OiI65vTjIdo9brlAacEuKOiQ5OFh7cOI1bkDwLqdLw3Zg0cRJAAQ==" crossorigin="" /> <style type="text/css"> #map{ /* la carte DOIT avoir une hauteur sinon elle n'apparaît pas */ height:500px; width :100%; } </style> 3.2 - script dans le body tu colles : <script src="https://unpkg.com/leaflet@1.3.1/dist/leaflet.js" integrity="sha512-/Nsx9X4HebavoBvEBuyp3I7od5tA0UzAxs+j83KgC8PU0kgB4XiK4Lfe4y4cgBtaRJQEIFCW+oC506aPT2L1zw==" crossorigin=""></script> <script type="text/javascript"> // On initialise la latitude et la longitude de Paris (centre de la carte) var lat = 47.650538 //47.6495991; //47.649390; var lon = -2.088535 //-2.0904351; //-2.090442; var ville = "<h3>Christine Bléno</h3><h4>C'est un signe</h4><br>35600 Redon."; var macarte = null; // Fonction d'initialisation de la carte function initMap() { // Créer l'objet "macarte" et l'insèrer dans l'élément HTML qui a l'ID "map" macarte = L.map('map').setView([lat, lon], 15); // Leaflet ne récupère pas les cartes (tiles) sur un serveur par défaut. Nous devons lui préciser où nous souhaitons les récupérer. Ici, openstreetmap.fr L.tileLayer('https://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png', { // Il est toujours bien de laisser le lien vers la source des données attribution: 'données © OpenStreetMap/ODbL - rendu OSM France', minZoom: 9, maxZoom: 19 }).addTo(macarte); // Personnalise l'icone C'est un Signe (47.6495991 -2.0904351) <!-- var polygon = L.polygon([ /* [47.649524, -2.090631], [47.649414, -2.090652], [47.649384, -2.09034], [47.649449, -2.090329], [47.6494577, -2.090477], [47.649507, -2.090464] ]).addTo(macarte); var circle = L.circle([47.649507, -2.09044351], { color: 'blue', fillColor: '#f03', fillOpacity: 0.10, radius: 30 }).addTo(macarte); */ --> var marker = L.marker([lat, lon]).addTo(macarte); // Nous ajoutons la popup. A noter que son contenu (ici la variable ville) peut être du HTML marker.bindPopup(ville).openPopup(); } window.onload = function(){ // Fonction d'initialisation qui s'exécute lorsque le DOM est chargé initMap(); }; </script> 4 - tu vas dans ta page contact tu cliques sur modifier ( petit crayon ) 5 - dans le texte tu cliques sur insertion de code (souligné en rouge ci-dessous ) : 6 - dans la fenetre que tu auras à l'écran tu colles : <div id="map"> <!-- Ici s'affichera la carte --> </div> Voilà tu enregistres et tu auras ce que tu desires N'hésites pas si tu as besoin ou que j'ai mal expliqué !! Cordialement Mickael
  4. Bonsoir @omega, Pas de soucis mais attention zwii ( d'après la v11 ) vas encore changer donc ce code vas améliorer le livre il est fini mais j'attends la v11 et les infos sur la structure des données car j'ai aussi un projet sur un module qui pourras servir de : bibliothèque, vidéothèque, ludothèque, enfin un gestionnaire de .....thèque. allez bonne soirée et bon week-end Cordialement Mickael
  5. bonsoir @jasongouzien, alors le soucis viens de la section il faut ajouter un margin-bottom sur ta section tu utilises quoi comme version de zwii ? si j'ai la version je peux voir de mon coté ce qu'il faut faire car si @Fred est en congé et que je peux rendre service alors c'est avec plaisir Cordialement Mickael
  6. Bonjour @jasongouzien, Je viens d'aller sur ton site, difficile de voir d'où viens le soucis car il n'y a rien pourrait tu mettre une page de test avec du lorem afin de voir le soucis. Dans ton css qui se trouve dans la personnalisation du thème, il faudrait voir si dans le code du : footer tu pourrais ajouter un margin-top de 10 ou de 20px pour voir ce qui change. Mais essaye de mettre une page pour voir ce qu'il se passe . Merci Cordialement Mickael
  7. Bonjour, pour moi il y as au moins 2 solutions 1 - On peut faire une one page avec des iframes des pages cachées ou qui n'apparaissent pas dans le menu. 2 - Création d'un module ou chaque enregistrement de textarea serait une section avec une ancre ou ID afin de pouvoir faire un scroll, le tout avec une gestion en admin afin de pouvoir modifier les contenus de chaque section . je préfère la solution 2. c'est à réfléchir. c'est une bonne idée de module ce onepage !!! Cordialement Mickael
  8. Bonjour à tous, Pour ceux qui voudraient jeter un oeil sur mon code pour la sauvegarde et la restauration, je sais que c'est le bordelle dans les noms de mes variables dans les fonctions donc c'est prévu que je réorganise tout ça, pour les fichiers temporaires je les mettrais directements dans le répertoire data du module afin d'éviter un surcharge de fichiers dans source/data/livredor comme vous avez pu le voir dans la vidéo. je pense que c'est presque fini !! Restauration : public function restauration() { // Si on clique sur le bouton if($this->isPost()) { //Etape : 01 // Récuperation du fichier avec la valeur du input $Restjson=$this->getInput('livredorRestaurationJson'); // Création de la variable du fichier $file = self::FILE_DIR.'source/'.$Restjson; // On mets la valeur du fichier dans une variable $data3 = json_decode(file_get_contents($file), true); //Etape : 02 // On recupère le fichier qui vient de la sauvegarde temporaire de la fonction sauvagerde $file02 = self::FILE_DIR.'source/data/livredor/tmp1.json'; // On recupère les données du fichier de sauvegarde $fichiertmp = json_decode(file_get_contents($file02), true); //Etape : 03 // On récupère les deux fichiers à assembler $dados1 = json_encode($data3,JSON_PRETTY_PRINT); $dados2 = json_encode($fichiertmp,JSON_PRETTY_PRINT) ; //On assemble des deux fichiers dans un seul sans toucher au module.json $finale=json_encode(array_merge(json_decode($dados1, true),json_decode($dados2, true)),JSON_PRETTY_PRINT); //Etape : 04 // On crée un fichier temporaire avec les valeurs des deux fichiers assemblés $tmp = file_put_contents(self::FILE_DIR.'source/data/livredor/tmp.json',$finale); //Etape : 05 // on decode le fichier temporaire pour le reprendre dans une variable $data10 = json_decode(file_get_contents($tmp), true); // On recupère le fichier qui vient de la variable $file03 = self::FILE_DIR.'source/data/livredor/tmp.json'; // on recupère les données du fichier fusionné $fichierfusion = json_decode(file_get_contents($file03), true); //Etape : 06 //on ajoute le fichier tmp.json dans le module.json $this->setData(['module', $this->getUrl(0),$fichierfusion]); // on mets dans une variable les messages du livre d'or existant $data11 = $this->getData(['module', $this->getUrl(0)]); // on encode le fichier $data21 = json_encode($data11, JSON_PRETTY_PRINT); // creation du fichier temporaire $tmp2 = file_put_contents(self::FILE_DIR.'source/data/livredor/tmp2.json',$data21); //Etape : 07 // Affiche le succée avec redirection vers la page config $this->addOutput([ 'notification' => 'Importation avec succée <br />dans le fichier module.json ', 'redirect' => helper::baseUrl() . $this->getUrl(0) .'/config', 'state' => true ]); } // Valeurs d'accée à la page restauration $this->addOutput([ 'Nom' => 'Configuration avancée', 'view' => 'restauration' ]); } Sauvegarde : /** * Exportation des données du livre d'or dans un fichier json indépendant * @author un membre de la communauté de zwii * @Février */ public function sauvegarde() { // si on appuie sur le bouton livredorSauvegardeSubmit if($this->isPost('livredorSauvegardeSubmit')) { // on recupère les données du fichier module.json, // ici les messages du livre d'or $data = $this->getData(['module', $this->getUrl(0)]); //on verifie si le tableau est different de vide if ($data !== []) { // création du nom du fichier, // on recupère la valeur du champ input du formulaire sauvegarde.php $nomjson=$this->getInput('livredorSauvegardeJson').'.json'; // si le repertoire n'éxiste pas if (!file_exists(self::FILE_DIR.'source/data/livredor')) { // Création du répertoire mkdir(self::FILE_DIR.'source/data/livredor'); } // Création du fichier json en serialisant $json = json_encode($data, JSON_PRETTY_PRINT); //on integre les données dans le nouveau fichier json $file = file_put_contents(self::FILE_DIR.'source/data/livredor/'.$nomjson, $json); $file2 = file_put_contents(self::FILE_DIR.'source/data/livredor/tmp1.json', $json); // copie du fichier également faite dans le répértoire data du module $file = file_put_contents(self::FILE_UPLOAD.''.$nomjson, $json); // notification si c'est enregistré $this->addOutput([ 'notification' => 'Création du fichier Json<br />avec le nom '.$nomjson, 'redirect' => helper::baseUrl() . $this->getUrl(0) .'/config', 'state' => true ]); }else { // notification si le tableau est vide $this->addOutput([ 'notification' => 'Aucune donnée à sauvegarder', 'redirect' => helper::baseUrl() . $this->getUrl(0) .'/config' ]); } } // ALLER à la configuration du module $this->addOutput([ 'title' => 'Configuration du module', 'view' => 'sauvegarde' ]); } voilà bonne lecture !! Bonne soirée Cordialement Mickael
  9. Bonsoir @Fred, @roger, @sylvainlelievre, et à tout le monde du forum, L'amélioration du module livre d'or avance bien, 1 - Modification du gestionnaire de fichier pour la prise en charge des fichier json ( voir tuto @roger )=> ok 2 - Création d'une page de Sauvegarde et de Restauration => ok 3 - Création d'un fichier .json de sauvegarde ( de la section du module : ici le livre d'or ) avec le nom du fichier que l'on désire => ok 4 - Création de restauration d'un fichier avec sélection du json en passant par le gestionnaire de fichier => ok 5 - Création d'un fichier temporaire afin de faire une fusion du fichier de sauvegarde avec le fichier à restaurer => ok 6 - Récupération des données du fichier temporaire pour l'injecter dans le fichier module.json => ok 7 - Reste à mettre le code au propre avec les explications concernant les lignes de codes. Dans la vidéo que je vous joins : je vous présente la page de sauvegarde et de restauration, je vous présente également les fichiers : 1- fichier01.json qui est crée avec la sauvegarde 2- le fichier livre3.json qui imaginons est un fichier se sauvegarde du second site de que vous avez 3- le fichier module.json qui prend bien en compte les modification avec les nouvelles données du fichier à restaurer sauvegarde et restauration.mp4 bonne vidéo Bonne soirée Cordialement Mickael
  10. Bonjour @sylvainlelievre, Ok alors c'est cool, si c'est prévu je ne modifie rien dans mon zwii .!! Oui c'est vrai excuse moi, j'avais oublié !! Bon je clos en Résolu !! Encore désolé Bon week-end Cordialement Mickael
  11. Bonjour tout le mode !! Je suis occupé de coder pour améliorer le module livredor, lorsque l'on mets celui-ci à disposition il est au format zip ou rar dans la section téléchargement. Je voulais savoir si @Fred ou @sylvainlelievre ( développeurs de zwii ) avez l'intention lors de la création d'une nouvelle page, d'ajouter à coté de la liste des modules un bouton afin d'importer le zip et de le décompresser directement dans le répertoire ou se trouve la liste des modules ( ça évite le ftp ) en passant par le gestionnaire de fichier. Je pense que pour un débutant ça facilitera l'installation d'un module sans utilisation d'un ftp. je sais qu'il faut mettre un bouton dans core/module/page/view/edit/edit.php ( ou sinon on peut l'intégrer dans la barre noir en haut !! ) et la fonction qui permet de décompresser le fichier zip à mettre dans core/module/page/page.php afin de le mettre dans le répertoire module/"nom_du_module_à dézipper" et il sera visible dans la liste des modules Mais pour ça, il faut l'intégrer des codes qui ne s'effaceront pas lors d'une mise à jour ou mise en place d'une nouvelle installation. donc ma question est : 1 - avez vous prévu cette option ? 2 - Si oui, sera t'elle intégrée dans la version 11 de zwii ?. 3 - Est ce que j'ai votre autorisation pour l'intégrer chez moi sur la V_10.4 afin de vous en faire des retours ou c'est déjà prévu ? Merci et bon week-end Cordialement Mickael
  12. Bonsoir @Fred, Oui, je l'ai activé en suivant les infos de @roger, J'ai codé cette après midi : - création d'un formulaire avec entrer du nom du fichier que l'on désire, pour la sauvegarde des données précises du fichier module.json (ici dans mon cas c'est la partie messages du livre d'or ) dans un fichier, dans source/data/ avec la création d'un répertoire qui porte le nom du module, je pourrais le rendre automatique avec une date et des secondes mais c'est plus sympas si la personne peux nommer le fichier elle même ). ( module.json vers sauvegarde.json ) - création d'un formulaire pour la restauration via le gestionnaire de fichier, après séléction du fichier celui-ci ( pour le moment ) remplace les messages du livre d'or : sauvegarde.json vers module.json sans toucher au reste des données des autres modules. - reste à travailler sur la possibilité d'ajouter les messages à ceux qui sont présents dans le module.json Cordialement Bonne soirée Mickael
  13. Bonsoir @Fred, Si cette option est activée définitivement alors c'est super cool !! Du coup si c'est confirmé, ça ne sert plus à rien de travailler sur un fichier zip contenant le fichier json avec : new ZipArchive(), et du coup j'ai moins de condition à intégrer dans la fonction . Mais bon si ça se fait c'est cool sinon ben je continue avec mon zip. Merci pour cette bonne nouvelle. Bonne soirée Cordialement Mickael
  14. Bonsoir @roger, Bien sur que ton astuce m'intéresse, le soucis c'est que moi je vais savoir le faire, mais dans l'état actuel du zwii les réglages se perdent lors d'une nouvelle installation ( ou d'une mise à jour de version supérieur, ça c'est moins sur !! ). Donc le mieux est de respecter les formats pris en charges par default d'une nouvelle installation donc le zip. C'est certain que la modification pour la prise en charge du json serait plus simple pour le code mais d'un autre coté les personnes qui ne codent pas, connaissent mieux un zip qu'un json. Mais bon je me mets à la place d'un débutant qui installe zwii et qui ne veut pas modifier les réglages de prise en charge de ce type de fichier. Pour le moment je code avec deux version : 1 avec du json et 1 avec du zip pour mon module, l'avenir de zwii me dira quelle sera la mieux, donc je préfère faire les deux tout de suite afin de ne pas perdre de temp le moment venu. Merci pour ton astuce, du coup je vais mettre une seconde version de zwii qui prend en charge les modifications que tu cites ci-dessus comme ça je pourrais faire les deux versions. Encore merci pour les infos, Bonne soirée Cordialement Mickael
  15. Bonjour, @Fred, @sylvainlelievre, @roger, @omega, @Gilux et tout le monde !! voici mes quelques avancées : - Création d'un fichier Json dans un répertoire data du module en lui même ( ça c'était déjà fait ) avec un fonction que j'ai relié pour l'instant sur un bouton. - comme le gestionnaire de fichier ne prends pas en charge les fichiers json, j'ai donc décidé de faire un fichier zip qui contiendrais le fichier json 1 - j'ai ajouté dans le livredor.php : 1.1 - un accès au répertoire data du module avec placer dans livredor.php : const FILE_UPLOAD = 'module/livredor/data/'; 1.2 - un bouton qui crée directement le fichier Json dans ce repertoire ( c'est déjà fait ) ==> le bouton sera remplacé par un formulaire pour mettre le nom du fichier que l'on désire. 2 - j'ai crée une page avec un formulaire pour y mettre le nom du fichier zip à créer ce champ est obligatoire !! 3 - J'ai également mis en place la fonction qui récupère la valeur du champ ci-dessus pour l'intégrer à la création du fichier zip, 3.1 - Création du fichier avec la valeur du champ en passant par une variable, 3.2 - Ouverture du zip pour y mettre le fichier Json suivant le chemin en 1.1( ci-dessus), 3.3 - Fermeture du fichier zip , 3.4 - Effacement du fichier Json dans le répertoire data du module ( après c'est pas une obligation !! ), 3.5 - Avertissement de la création du fichier, 4 - redirection de la page vers config.php, le tout est dans une fonction. Prochaine étape : création d'un formulaire pour choisir le fichier zip, faire une extraction et le mettre au bonne endroit dans le fichier module.json. et l'idéal serait d'avoir le choix pour ajouter en plus de ce qui existe ou remplacer ce qui existe avec une case à cocher. Voilà ça avance petit à petit. N'hésitez pas à me remonter vos remarques et vos idées !! Cordialement Mickael
×
×
  • Créer...