Plus de 10 000 commits plus tard
Avec cette version, VirtueMart a dépassé la barre des 10 000 commits de code et environ 150 commits ont été intégrés à VirtueMart depuis la publication de la dernière version stable de VirtueMart 3.4.x il y a quelque temps. Dans l'intervalle, nous avons publié des versions de développement et des versions candidates. Parmi les nombreuses améliorations et corrections de bugs mineurs, voici quelques-uns des changements les plus remarquables.
Pour les propriétaires de boutique
Edition de Commande
L’amélioration de la fonctionnalité d’édition de commande était un problème difficile à résoudre et a pris beaucoup plus de temps que prévu. Nous avons ajouté des attributs supplémentaires tels que est payé, ce qui permet aux propriétaires de boutique de visualiser rapidement les commandes confirmées mais non payées ou les pour les commandes payées mais remboursées: fonctionnalité particulièrement intéressante pour les achats sur compte. Les améliorations inclus des fonctionnalités moins visibles, comme par exemple: une commande impayée pour le statut de la commande "Remboursé" affichera le message "non recommandé". Les commandes non encore livrées doivent simplement être annulées.
Affichage des médias manquants
Précedement la fonctionnalité d'affichage des médias manquants dans le menu «liste de médias» de VirtueMart consistait simplement à filtrer la liste chargée et il était uniquement possible de rechercher les médias manquants dans les 400 premiers médias. Le problème ici était évidemment que le travail ne peut pas être effectué simplement par une requête SQL car il fallait aussi vérifier l'existance du média dans le système de fichiers. Il était donc «impossible» de les énumérer sur les pages qui suivent la première. La nouvelle fonction exécute la requête jusqu'à 1000 fois, mais s'arrête lorsque la première page est remplie. Supposons que la pagination est définie sur 30 et qu'il y a 500 médias manquants dans les 30 000 premiers médias, elle affiche alors les 30 premiers. D'autre part, si la pagination est définie sur 400 et que vous avez 399 supports manquants sur 400 000, vous verriez les 399 disparus.
Plugin de téléchargement
La société iStraxx a fait don d’une version simplifiée de leur «plug-in de téléchargement». Il permet de télécharger un fichier une fois. Il s’agit bien sûr de travailler avec des liens indirects, ce qui signifie que l’utilisateur obtient un lien pointant vers le plug-in et que le plug-in décide si l’utilisateur obtient un fichier.
Pour les développeurs
Plugin livraisons et paiements
Nous accordons beaucoup d'importance aux souhaits des développeurs de plugins. Les méthodes de livraisons et de paiement peuvent désormais utiliser les nouveaux paramètres de restriction fournis par le noyau, et sont très simples à mettre en œuvre. Consultez notre lien de tutoriel pour plus de détails: https://docs.virtuemart.net/tutorials/development/236-update-payment-shipment-plugin-using-new-core-restrictions.html
Les accès
Il y a un changement majeur dans vmAccess. Le nouveau système vérifie les droits sans vérifier une tâche uniquement pour admin / manager. Lorsqu'une tâche est donnée, il ne vérifie que pour la tâche. L'ancien système vérifiait toujours l'admin / manager plus les tâches données.
Il y a quelques nouvelles autorisations et certaines ont été supprimées. Dans le cas d'une entrée utilisateur d'arrière-plan, les filtres de permission "vm.raw" et "vm.html" ont été supprimés. Nous utilisons maintenant le validateur Joomla pour la saisie.
Module affichage des catégories
Spyros Petrakis a ajouté une fonctionnalité intéressante: le module de catégorie peut maintenant être affiché à l'aide du séparateur de menus de joomla. Utilisez simplement le menu et l'id souhaités en tant que classe, par exemple mod_virtuemart_category-id.
Le futur
La feuille de route pour VirtueMart contient de nombreuses idées.
Nouveau template frontal
Nous travaillons actuellement sur un nouveau template frontal avec le développeur de template de la société "Virtueplanet"
Nouveau template administration
Nous travaillons aussi sur l'evolution du template administration. Nous avons également besoin d'un coup de main pour le nouveau template. Rejoignez notre équipe! Devenir membre de l'équipe est simple. Montrez simplement sur notre forum que vous savez de quoi vous parlez et faites une demande ici http://forum.virtuemart.net/index.php?board=139.0
VirtueMart pour Wordpress
Une autre idée est de rendre VirtueMart disponible pour les utilisateurs de Wordpress. Nous avons également besoin d'un coup de main ici. L'idée est d'utiliser autant que possible les bibliothèques Joomla, c'est pourquoi nous allons également travailler sur Joomla 4.
Et aussi
D'autres idées pour le noyau VirtueMart sont les suivantes: calculatrice améliorée, multi enfants améliorés, affichage amélioré (davantage de radios avec des images au lieu de menus déroulants), adaptation du système joomla customfield, etc.
Autres changements
Propriétaire de boutique
- new hidden config "hideEmptyCustomfields" hides empty customfields
- search customfields, removed options of empty customfields
- new switch "newBackendTemplate". Just add to the virtuemart.cfg newBackendTemplate=1 to try the new backend template. Currently only the configuration view is updated.
- translateable calculation rule names
- vendor mail if order status changed has adjustable text per order status now COM_VIRTUEMART_MAIL_VENDOR_CONTENT_
- removed storing of cart to table for normal cart calls
- enhanced snippets.php for Searchengines
- enhanced coupon listing,
- added published to coupons
- delivery address get automatically named with the zip and a random number
- buttons for the add-to-cart popup
- removed the second button group on top to avoid problems with captchas.
- validateUserData, validation of the country/state works now also when the state is unpublished
- fixed custom model, in case of wrong extension_id, updating now to the correct extension_id
- attachment for emails: Very important fix, views are instances and so attached medias must be set to an empty array to prevent sending wrong attachments
Mises à jour majeures du panier
- loading an old cart does not override already entered values
- defaults are now correctly loaded not only into the fields but also into the cart address arrays
- automatic selected ship/payment works now loading all available methods. Before it was only working if there was only one method left.
- Fixed Paypal Smartbuttons
- product added popup (padded.php) displays now actually added product amount (set in the cart helper)
- product model, loading price should now consider the time offset correctly
- removed dragndrop ordering for products, if there is more than one page (the js is not prepared for)
- removed print view popup of invoices. It produced a different print, than by pdf.
Développeur
- new loading of Plugins to ensure correct execution sequence. In case of site, they are loaded directly in loadConfig. replaced JPluginHelper::importPlugin against VmConfig::importVMPlugins
- Important fix for 404 handling to prevent loop when an unpublished category is browsed
- fixed 404 in case controller was not found
- moved the classes vmAccess, vmUri in extra files
- moved Reporting/echo function in an own file
- product model enhanced sql for omitted products
- fixed json view for customplugins in edit customs, dropdowns were not correctly loaded and got stored with wrong default values
- which lead to wrong default order status for some 3rd party plugins, therefor also a fix for the field orderstatus to load comma seperated default values correctly
- new function getStrByAcl to get Strings from the Request by ACL
- moved the price display of plugins in an own sublayout.
- added new permission vm.user.editvendor, IMPORTANT the permission vm.user.editshop should be set for the shop owner respectivly the super admin only!
- enhanced setStoreOwner function, which considers the multivendor configuration of the shop now
- changed the initialising of the cart so, that it always loads the userfields with the default values first. Function prepareAddressFieldsInCart is now deprecated
- extra checks in the table vmusers for user/vendor relation
- replaced a continue in a switch against break for php7.3 compatibility
- disabled loading of the jQuery framework from joomla completly if jQuery is disabled in the vm config (by Abhishek)
- disabled loading of popup fancybox/facebox if jQuery is disabled (by Abhishek)
- final update for TcPdf,
a) updated paths,
b) added an hint why there are no images and removed breaking rendering for missing images
c) VmPdf got more error messages and should load the defines by itself, class VmVendorPDF is not anylonger wrapped in if(class_exists('TCPDF')){ - replaced the file_get_contents against the modern JHttpFactory::getHttp
- product details, fixed canonical URL of the parent product
- address fields in the cart can now be initialized filled only with default values but without rendered html and js scripts
- added variable to the cart, which keeps the values set by defaults to determine if a value is set by the user or the system
- addJScript uses now the defer and async correctly again.
- Important fix, related to svn 10005 and forum post http://forum.virtuemart.net/index.php?topic=141797.0- Important fix, related to svn 10005 and forum post http://forum.virtuemart.net/index.php?topic=141797.0This time, a missing customfield is directly added as array to the variantmods array
Templater
- Invoice view, the address fields are now directly accessible, for example with echo $this->userfields['BT']['email']
Performance et optimisation
- userfield model country field, replaced direct sql by VmTableCountry (getTable,...)
- payment/shipment methods, added cache and own function for getting shoppergroups. This prevents one call per plugin n the cart.
- VmPlugin, added important cache for function selectedThisByMethodId
- getPluginMethods is cached
- router is now using the same parameters as used for product browsing, which saves again a lot sql (products are not extra loaded for router!).
- product model added cached function getCurrentUserShopperGrps, function getProduct finds the CurrentUserShopperGrps itself before it needed to be called before the getProduct function. Same function used in getProductSingle and getProducts!
- enhanced the checkIfCached function, so the router can most time find an already loaded product
- model customfields, enhanced also the cache of the function getCustomEmbeddedProductCustomFields
- optimization for the functions getCountryByID and getCountryIDByName and the country model, loading a country creates directly multiple keys for the cached entry.
- added important improvement, removed random in sql, the randomizing of products is done by loading more than needed an array_shuffle
- router uses now also the cached Table class (reduced sql drastically)
- added autohashing of tables (if set in the constructor)
- model userfields replaced single requests in function getIfRequired against one but cached request.
- Fixed caching in customfields model, loading a product twice with different quantities loaded the customfields plus the cached ones
- Caching in model state functions getStates and testStateCountry
- Caching in mediahandler function getIcon
- getVmPluginMethod set false as default for parameter cache